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;
}
4

1 に答える 1

3

しかし、あなたは変数を持っています- result!どうしたの

var asFoo = result as IFoo;
if (asFoo != null)
    asFoo.FooMethod();
于 2012-04-19T11:44:15.643 に答える