2009-09-29 51 views

回答

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

使用完全合格的名稱,因爲組件可能還沒有被加載:

object a = Type.GetType("System.Xml.XmlDocument, System.Xml", true); 
+1

失敗。 System.XmlDocument的AssemblyQualifiedName屬性需要的不僅僅是逗號+ System.Xml,可能是因爲它是強命名的。您需要使用Type.GetType(「System.Xml.XmlDocument,System.Xml,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089」) – 2010-07-08 18:57:20

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") 
+0

-1:我不明白這與接受的答案有何不同。 – 2010-07-08 19:02:40

+1

用我的答案,你仍然只是使用Type.GetType,並假定程序集已經被引用。而且僅供參考,我剛剛有*確切*相同的問題,並且接受的答案不是我的解決方案。這是。 – 2010-07-08 19:05:17

相關問題