在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中仍然可行吗?如果可行,如何实现?我要做的是从一个表示类的字符串中创建一个类的实例。
CoreCLR/Windows 10等中的反射已经将Type
中的许多内容移动到了TypeInfo
中。您可以使用IntrospectionExtensions
来获取Type
的TypeInfo
。例如:
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中的类型名称。