我正在尝试从类型全名中获取类型对象,我正在执行以下操作:
Assembly asm = Assembly.GetEntryAssembly();
string toNativeTypeName="any type full name";
Type t = asm.GetType(toNativeTypeName);
我得到的是空值,为什么?
程序集是我的可执行文件(.net 可执行文件),类型名称是:System.Xml.XmlNode
最佳答案
好吧,如果那真的是类型的全名(即包括命名空间)并且它在那个程序集中,那么它应该可以工作。你能举一个没有的例子吗?当您使用 Assembly.GetType
而不是 Type.GetType
时,您不应在类型名称中包含程序集名称。
请注意,通用类型的名称并不是您所期望的那样。例如,您将使用:
assembly.GetType("System.Collections.Generic.List`1");
获取通用列表类型,然后使用 Type.MakeGenericType
提供类型参数。
当然,只有当类型是泛型时才有意义。如果这不是问题所在,我会仔细检查该类型是否确实在您的入口程序集中。
编辑:哦,请注意嵌套类型将是“Container+Nested”而不是“Container.Nested”,如果相关的话......
关于c# - 从全名创建 C# 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392763/