2010-03-28 33 views
3

從託管代碼中,假設調用代碼沒有對程序集的靜態引用,如何在運行時從另一個程序集加載託管類型?從外部程序集動態加載類型

爲了澄清,比方說,我有Lib.cs中的類Lib編譯到Lib.dll中。我想在一個名爲Foo.dll的單獨程序集中編寫一個Foo類,它沒有靜態地引用Lib.dll,而是加載Lib.dll,然後反思類Lib的存在,然後調用方法在上面。

對於反射這樣一個顯而易見的問題抱歉。我認爲在閱讀一些文章的論壇上獲得答案的時間會少得多。

回答

4

這裏是一個簡短的片段:

Assembly assembly = Assembly.LoadFile("Lib.dll"); 
ILib lib = (ILib)assembly.CreateInstance("Lib"); 
lib.doSomething(); 

當然的lib類必須實現ILIB接口,必須同時從Foo.dll和Lib.dll訪問。這樣你就可以實現抽象。

+0

謝謝,Petar。這對我來說是一個很好的開始。 我在設計上堅定了我的想法,並且我還沒有決定是否希望調用方擁有合同或使用MethodInfo []在被調用對象的vtable上反映。 再次感謝。 – 2010-03-28 19:16:38

+0

歡迎您:) – 2010-03-28 19:17:22

相關問題