在 Windows 10 个通用应用程序中使用 CreateInstance
Using CreateInstance in Windows 10 Universal Apps
以下代码无法在 Windows 10 通用应用程序中编译,但可在 .Net 控制台应用程序中编译(均使用反射):
string objType = "MyObjType";
var a = Assembly.GetExecutingAssembly();
var newObj = a.CreateInstance(objType);
通用 windows 应用似乎不包含方法 Assembly.GetExecutingAssembly()
; Assembly 对象似乎也不包含 CreateInstance
.
Activator.CreateInstance 在 .Net 中有 16 个重载,在 Win 10 应用程序中只有 3 个。我正在引用桌面扩展。
这种类型的构造在 Windows10 中是否仍然可能,如果可以,如何实现?我想要做的是从表示 class.
的字符串创建 class 的实例
CoreCLR 中的反射 / Windows 10 等已经将 Type
中的很多内容移动到 TypeInfo
. You can use IntrospectionExtensions
中以获得 TypeInfo
Type
。例如:
using System.Reflection;
...
var asm = typeof(Foo).GetTypeInfo().Assembly;
var type = asm.GetType(typeName);
var instance = Activator.CreateInstance(type);
希望所有这些都对您可用(根据我的经验,文档可能有点混乱)。或者你可以只使用:
var type = Type.GetType(typeName);
var instance = Activator.CreateInstance(type);
...使用程序集限定的类型名称,或者当前正在执行的程序集或 mscorlib 中的类型名称。
以下代码无法在 Windows 10 通用应用程序中编译,但可在 .Net 控制台应用程序中编译(均使用反射):
string objType = "MyObjType";
var a = Assembly.GetExecutingAssembly();
var newObj = a.CreateInstance(objType);
通用 windows 应用似乎不包含方法 Assembly.GetExecutingAssembly()
; Assembly 对象似乎也不包含 CreateInstance
.
Activator.CreateInstance 在 .Net 中有 16 个重载,在 Win 10 应用程序中只有 3 个。我正在引用桌面扩展。
这种类型的构造在 Windows10 中是否仍然可能,如果可以,如何实现?我想要做的是从表示 class.
的字符串创建 class 的实例CoreCLR 中的反射 / Windows 10 等已经将 Type
中的很多内容移动到 TypeInfo
. You can use IntrospectionExtensions
中以获得 TypeInfo
Type
。例如:
using System.Reflection;
...
var asm = typeof(Foo).GetTypeInfo().Assembly;
var type = asm.GetType(typeName);
var instance = Activator.CreateInstance(type);
希望所有这些都对您可用(根据我的经验,文档可能有点混乱)。或者你可以只使用:
var type = Type.GetType(typeName);
var instance = Activator.CreateInstance(type);
...使用程序集限定的类型名称,或者当前正在执行的程序集或 mscorlib 中的类型名称。