我想在運行時從另一個應用程序加載一個dll,但同時需要創建一個在dll中實現的類的實例。它可以完成嗎?我可以在運行時加載dll,並且有一些例子,但是如何在沒有加載dll的情況下調用類?不會編譯,對嗎?在運行時在.Net中加載dll並創建一個類
回答
您可以在運行時加載dll。
這樣的:
//load assembly
var ass = Assembly.LoadFile("ADll.dll");
//get types from assemblt
var typesInAssembly = ass.GetTypes();
var type = typesInAssembly.First(/*select one*/);
//create instance
var object = Activator.CreateInstance(type, new object [] { "arguments" });
謝謝。你將如何調用新對象的屬性?不能使用object.MyProperty,對吧? – NewDTinStackoverflow
當然,您可以使用下面的調用方法。只需使用GetProperties –
還有一個問題,如果被加載的dll需要另一個dll,我可以同時加載多個dll嗎?它似乎沒有工作.... – NewDTinStackoverflow
它會編譯。最簡單的方法是與您的應用程序有共同的界面,並加載DLL。你可以在這裏找到熱門文章:C# - Correct Way to Load Assembly, Find Class and Call Run() Method。
但是,如果你沒有共同的界面仍然可以CreateInstance
,然後找到你所需要的所有方法(下面的例子是所有方法):
MethodInfo[] methodInfos = Type.GetType(selectedObjcClass) .GetMethods(BindingFlags.Public | BindingFlags.Instance);
然後調用使用Invoke
這樣的選擇之一:
method.Invoke(selectedObjcClass, params...);
- 1. 在運行時創建一個類並在.Net中使用它?
- 2. DLL在運行時加載類型
- 3. 在.NET中,引用的DLL在運行時按需加載?
- 4. 如何加載DLL並在C#中創建一個新實例?
- 5. 如何在運行時加載類庫DLL並使用VB.NET運行類函數?
- 6. 加載dll庫並在運行時運行代碼
- 7. 在運行時在一個scala項目中加載一個類
- 8. 創建一個類,並在運行時裝飾它
- 9. 創建一個在運行時加載XAML的WPF控件
- 10. 在C++運行時創建dll
- 11. 在C#運行時加載dll
- 12. 在C#運行時加載DLL#
- 13. 在運行時加載dll - Delphi
- 14. 在運行時加載COM DLL?
- 15. 在運行時動態加載DLL
- 16. 在運行時加載類時無法創建bean
- 17. 在運行時創建類
- 18. 在運行時創建類
- 19. 在我的統一遊戲中暴露一個類到在同一遊戲中在運行時加載的DLL?
- 20. 在C#.net 4.0運行時加載TLB
- 21. 運行時創建一個類
- 22. 德爾福:你可以在DLL中有一個組件類的定義,並加載並在運行時創建它?
- 23. 從DLL創建並加載DialogBox
- 24. 需要在運行時從jar中加載一個scala類並初始化它
- 25. 在運行時加載嵌入在DLL中的WPF控件
- 26. atexit()在運行時加載的dll /中的行爲是什麼?
- 27. 在運行時創建jrxml文件並在運行時修改
- 28. .NET反射加載DLL文件給運行時錯誤(R6034)!
- 29. 在jQuery中創建一個圖像並加載後加入DOM
- 30. 在運行時將兩個類合併到一個類中
可能的複製[負載運行時組件,並創建類的實例(http://stackoverflow.com/questions/1803540/load-assembly-at-runtime-and-create-類實例) – Vamsi
[如何將程序集加載到應用程序域](http://msdn.microsoft.com/zh-cn/library/25y1ya39.aspx) –
[如何卸載應用程序域](http: //msdn.microsoft.com/en-us/library/c5b8a8f9.aspx) –