2012-04-19 15 views
1

私はジェネリックメソッド(下記のコードを参照してください)を持っていて、Tが特定のインターフェイスであれば何らかのアクションを実行したいと考えています。
明らかに私はちょうどtypeof(T).IsAssignableFrom(IFoo)を行うことができましたが、反射は比較的遅いので、可能ならば避けたいと思います。インターフェイスのgeneric型パラメータをテストします

今、私は曖昧なメソッドのエラーを得るため、私は制約を持つ別のメソッドを持つことができないことを知っています。

私がしたいことをする方法はありますか?
私はこれをいくつかの建築上の問題を指摘したいと思いますか? result -

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

しかし、あなたが持っているは、変数を持って!何が悪いのですか

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

私はちょうど私がちょうど馬鹿だと信じられません! –

関連する問題