1

私はこのインターフェースを定義しています:

public interface IOwlAnnotation2<T1, T2, T3>
{
    T1 OwlAnnotation { get; set; }
    T2 OwlClass { get; set; }
    T3 AnnotationValue { get; set; }
}

今、私はそれのためのクラスを派生させたい...だから私は書く:

public class OwlAnnotation2 : IOwlAnnotation2<T1, T2, T3>

しかし、T1,2,3 のシンボルを解決できませんというエラーが発生します...そのインターフェイスから派生する正しい方法は何ですか?

4

2 に答える 2

7

実装クラスで型パラメーターを指定する必要があります。それらを一般的なままにすることができます:

public class OwlAnnotation2<T1, T2, T3> : IOwlAnnotation2<T1, T2, T3>

またはそれらを具体的にします:

public class OwlAnnotation2 : IOwlAnnotation2<string, int, bool>
于 2012-08-19T00:56:22.243 に答える
4

同じ引数の価数でクラスをジェネリックにするか、クラス引数が決定されたバージョンのインターフェースを実装してください。どちらが本当に必要かによって異なります。

クラスがインターフェイスの一部のクラスのみを決定する場合は、組み合わせることもできますが、質問を考えると、おそらくそうではないだろうと想像しています。

于 2012-08-19T00:56:51.097 に答える