Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows 10通用应用程序中使用CreateInstance_C#_.net_Windows 10_Win Universal App_Windows 10 Desktop - Fatal编程技术网

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

C# 在Windows 10通用应用程序中使用CreateInstance,c#,.net,windows-10,win-universal-app,windows-10-desktop,C#,.net,Windows 10,Win Universal App,Windows 10 Desktop,以下代码不在Windows 10 Universal应用程序中编译,但在.Net控制台应用程序中编译(两者都使用反射): 似乎通用windows应用程序不包含方法Assembly.getExecutionGassembly();程序集对象似乎也不包含CreateInstance Activator.CreateInstance在.Net中有16个重载,在Win 10应用中只有3个重载。我正在引用桌面扩展 在Windows 10中,这种类型的构造是否仍然可行?如果可行,如何实现?我试图做的是从一个

以下代码不在Windows 10 Universal应用程序中编译,但在.Net控制台应用程序中编译(两者都使用反射):

似乎通用windows应用程序不包含方法
Assembly.getExecutionGassembly()
;程序集对象似乎也不包含
CreateInstance

Activator.CreateInstance在.Net中有16个重载,在Win 10应用中只有3个重载。我正在引用桌面扩展


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

CoreCLR/windows10等中的反射已经将过去的
类型
中的很多内容转移到了。您可以使用获取
类型的
类型信息
。例如:

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

听起来像是要获取类型,例如使用
assembly.GetType(…)
然后调用
Activator.CreateInstance(type)
。哪个程序集是中的类型?类型在当前程序集中(为什么我试图调用GetExecutionGassembly),所以如果我可以得到正在执行的程序集,我当然可以这样做。你不能使用
typeof(Foo)。程序集
其中
Foo
是你正在编写代码的类型吗?谢谢,Jon-虽然这本身不起作用,你给我指明了正确的方向。基本上,键命令是Type.GetType(),它接受字符串并返回类型。我认为这是一种安全措施,以确保您只能反映您自己的程序集。请参阅我的ansewr-我相信您仍然可以反映其他程序集,但反映有所改变。
var type = Type.GetType(typeName);
var instance = Activator.CreateInstance(type);