2011-07-28 54 views
0

我想加載一個DLL文件,如果它存在,並創建一個新的實例,將其轉換並傳遞給另一個函數。如何加載DLL並在C#中創建一個新實例?

我目前做的是什麼添加一個引用到DLL,並創建一個實例,例如,

ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", new Efs()); 

我試圖動態加載它,但它給使用System.TypeInitializationException

我的代碼是:

 if (File.Exists("plugin\\Efsystem.dll")) 
     { 
      Assembly assembly = Assembly.LoadFrom("plugin\\Efsystem.dll"); 
      Type type = assembly.GetType("Efs"); 
      ConfigFileSystemRegistry.Instance.RegisterFileSystem("er://", (IFileSystem) Activator.CreateInstance(type)); 
     } 
+0

什麼是DLL的實例? – Oded

+0

抱歉,我的意思是DLL中特定類的實例。 – segfault

+0

什麼是'System.TypeInitializationException'的異常消息? – Peter

回答

0

您可能想檢查是否存在默認構造函數。如果沒有,請參閱您需要的參數,然後使用params object[] args參數調用CreateInstance的重寫。

1

System.TypeInitializationException意味着你的靜態構造函數拋出一個異常。檢查提示的內部異常和堆棧跟蹤。

相關問題