2012-04-19 45 views
1

我有一個通用方法(請參閱下面的代碼),並且想要在T是特定接口時執行某些操作。
顯然我可以做一個typeof(T).IsAssignableFrom(IFoo)但反射比較慢,所以我想盡量避免它。測試接口的通用類型參數

現在,我知道我不能有一個約束的另一種方法,因爲我會得到模糊的方法錯誤,否則我只是這樣做。

有沒有辦法做我想要的?
難道我想這樣做的事實指向一些架構問題?

public T Load<T>(string name) 
{ 
    T result = LoadFromName<T>(name); 

    if(T is IFoo) // Obviously doesn't work as T is a type, not a variable 
     (result as IFoo).FooMethod(); 

    return result; 
} 

回答

3

但是你有一個變量 - result!有什麼問題

var asFoo = result as IFoo; 
if (asFoo != null) 
    asFoo.FooMethod(); 
+0

我不敢相信我剛纔一直很傻! – 2012-04-19 11:46:41