以下代码失败,出现'无法加载类型'System.Xml.XmlDocument'来自程序集'错误:
object a = Type.GetType("System.Xml.XmlDocument", true);
我引用了XmlDocument所在的System.Xml。
知道我做错了吗?
答案 0 :(得分:2)
如果您需要能够从字符串动态加载它,这将起作用,您必须指定完全限定名称,因为GAC中可能有多个此dll版本。根据您使用的框架版本,将Version = 2.0.0.0替换为您要加载的版本。
Assembly xmlAssembly = Assembly.Load("System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
加载程序集后,您可以动态创建您所在类的实例。
object xmlDoc = xmlAssembly.CreateInstance("System.Xml.XmlDocument", false);
答案 1 :(得分:1)
使用完全限定名称,因为可能尚未加载程序集:
object a = Type.GetType("System.Xml.XmlDocument, System.Xml", true);
答案 2 :(得分:1)
通常只需附加逗号和程序集名称即“Namespace.Type,Assembly”即可。但是,如果程序集强名称,如System.Xml.dll,则需要使用Type.AssemblyQualifiedName属性,该属性不仅返回“Namespace.Type,Assembly”,还返回标识程序集所需的签名信息。这有效:
var xmlDocType = Type.GetType("System.Xml.XmlDocument, System.Xml, "
+ "Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")