2017-09-05 17 views
0

Fooという汎用メソッドを含むインターフェイスIAがあるとします。C# - 派生型と一致するインターフェイス一般的なメソッドの制約

public interface IA { 
    int Foo<T>(T otherType); 
} 

私はTが派生クラスと同じタイプになりたい:

class A : IA { 
    int Foo(A otherType) 
    { 
    } 
} 

私は(構文エラー)以下試してみました:

public interface IA { 
    int Foo<T>(T otherType) where T : this; 
} 

どのように制約がどのように見えるする必要がありませんそれを達成するために?

+0

可能性はありません。インタフェースは、それをどのように実装するかを知ることはできません。これは基本的に鶏肉/卵のものです。 – Jamiec

答えて

7

あなたはこのようにそれを行う必要があります:

public interface IA<T> 
{ 
    int Foo(T otherType); 
} 

class A : IA<A> 
{ 
    public int Foo(A otherType) 
    { 
     return 42; 
    } 
} 

これは、インターフェイスメンバのジェネリック型を強制する唯一の方法です。

関連する問題