2015-10-06 116 views
-3

我有實現界面下方的一些類:如何實例化一個接口,一個泛型參數

ISearchBase<T> 

但我不知道哪一個類將被實例化,所以我讓「用戶決定」 ,如下面的例子:

var objectResponse = Activator.CreateInstance(Type.GetType(ResponseNamespace)); 

的問題是: 每個這些類有回報,我試圖用這樣的:

var object = (ISearchBase<objectResponse >) 
      Activator.CreateInstance(Type.GetType(Namespace)); 

但編譯器不會讓我這樣做......我該怎麼辦?

的錯誤是:

類型或命名空間名稱 'objectResponse' 找不到。

+0

編譯器給你什麼錯誤? –

+0

有回報嗎?你遇到了什麼錯誤?你不能實例化接口,那麼你是否可以更清楚地知道你遇到麻煩的位置? – BradleyDotNET

+1

你不能實例化接口。你絕對需要爲你的文章增加一些清晰度。 –

回答

1

當你做你var object = (ISearchBase<X>)...必須知道在編譯時類型Xvar關鍵字只是編譯器推斷類型的簡稱。因此,您不能使用運行時類型來解決X

創建完成後,您還沒有向您展示如何處理object。當然可以使用反射來調用泛型方法來允許您使用類型安全的代碼,但是如果沒有看到更多的代碼,我無法判斷它是否對您有用。

相關問題