在 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 中的类型名称。