2010-12-10 12 views
5

のは、私はジェネリック駆動されるいくつかの基本的なインターフェイスを持っているとしましょう:C#のジェネリック質問 - 汎用的なインタフェースの制約

public class InterfaceImpl<T> { 
    public void Foo(T t) { 
     // Whatever 
    } 
} 

public interface Inteface<T> { 
    void Foo(T t); 
} 

今、私はまた、一般的なものであり、このインターフェースのいくつかの具体的な実装を持っています

これは問題なくOKですが、他のクラスがあるとしましょう:

public class Ololo { 
    public void BadFunction<TShouldModelInterface>(TShouldModelInterface shouldModelInterface) { 
     // Whatever 
    } 
} 

TShouldModelInterfaceが実際にInterface<T>のいずれかを実装しているかどうかチェックしたいと思います。

インターフェイスが一般的でない場合、私は単にwhere TShouldModelInterface : Interfaceのようなものを書きます。

インターフェイスがの場合、この問題を解決する方法はありますか?

+1

それはあまり一般的な –

+0

@Daniel Ahahahあるので、私はあなたのタイトルビットを変更...あなたの例では確かに少ない「ジェネリック」 –

+0

、「」InterfaceImpl は「」「」intefaceを「を実装していません」(行方不明の "r"、btw)。 'public class InterfaceImpl :Inteface ' 'と宣言してください。 –

答えて

8
public class Ololo { 
    public void BadFunction<TShouldModelInterface, T>(TShouldModelInterface shouldModelInterface) 
     where TShouldModelInterface : Interface<T> 
    { 
     // Whatever 
    } 
} 
関連する問題