2017-10-04 64 views
-2

我想將一個動態創建的對象投射到其擴展的特定接口。將創建的對象投射到接口類型

例子:

動態加載的DLL:

public class Foo: IBar 
{ 
} 

實際的程序:

var obj = code; // load assembly and fetch object 
Type type = obj.GetType().GetInterface("IBar"); 

IBar bar = (type) obj; 

顯然,這並不工作,因爲你不能轉換爲類型。有沒有其他方法?

+3

爲什麼不'伊巴爾欄=(IBAR)目標文件;'?你的約束是什麼? –

+0

接口是通過DLL動態加載的。 – Lyze

+1

即使動態加載,您仍然可以投射它。或者使用'as'而不是cast:'IBar bar = obj as Ibar;如果(酒吧!= null)...做一些與酒吧# –

回答

4

你應該有兩個dll。其中一個帶有實現IBar的接口,該接口由程序和動態庫引用。其次是動態庫。

然後就可以正常投:

IBar bar = (IBar) obj; 
相關問題