2013-08-23 33 views
0

我希望能夠在運行時加載程序集並能夠在代碼中使用它的所有類型。在運行時加載程序集,以便我可以訪問它的所有類型

我知道如何通過加載組件實例化一個對象: 是由

assembly = Assembly.LoadFrom(@"C:\Users\c_desaik\Desktop\PowerTool.exe"); 

      Type type = assembly.GetType("PowerTool.Automation"); 
      powerTool = Activator.CreateInstance(type); 

但是,讓我訪問整個組件的一個對象。但是如果我想使用枚舉和其他靜態類的程序集的其他成員,那我該怎麼做呢?

如果我在編譯時引用程序集,那麼我應該能夠像Assemblyname.membername那樣做一些操作。但是因爲我在運行時加載了這個。我怎樣才能做到這一點?

+0

你就不能'組裝。 GetType()'也獲得其他類型? –

回答

1

如果你想所有類型(包括私有類型)使用Assembly.GetTypes()

assembly = Assembly.LoadFrom(@"C:\Users\c_desaik\Desktop\PowerTool.exe"); 

foreach(Type type in assembly.GetTypes()) 
    Console.WriteLine(type.ToString()); 

如果只想公共類型使用GetExportedTypes

foreach(Type type in assembly.GetExportedTypes()) 
    Console.WriteLine(type.ToString()); 
相關問題