在Windows 10通用应用程序中使用CreateInstance

本文关键字:CreateInstance 应用程序 10通 Windows | 更新日期: 2023-09-27 18:20:15

以下代码不是在Windows 10通用应用程序中编译的,而是在.Net控制台应用程序中(均使用反射)编译的:

string objType = "MyObjType";
var a = Assembly.GetExecutingAssembly();
var newObj = a.CreateInstance(objType);

通用windows应用程序似乎不包含方法Assembly.GetExecutingAssembly();Assembly对象似乎也不包含CCD_ 2。

Activator.CreateInstance在.Net中有16个重载,在Win 10应用程序中只有3个重载。我指的是桌面扩展。

这种类型的构造在Windows 10中仍然可行吗?如果可行,如何实现?我要做的是从一个表示类的字符串中创建一个类的实例。

在Windows 10通用应用程序中使用CreateInstance

CoreCLR/Windows 10等中的反射已经将Type中的许多内容移动到了TypeInfo中。您可以使用IntrospectionExtensions来获取TypeTypeInfo。例如:

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