如何从具有泛型的接口派生类

Boh*_*ohn 1 c# generics

我定义了这个接口:

public interface IOwlAnnotation2<T1, T2, T3>
{
    T1 OwlAnnotation { get; set; }
    T2 OwlClass { get; set; }
    T3 AnnotationValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想为它派生一个类...所以我写道:

public class OwlAnnotation2 : IOwlAnnotation2<T1, T2, T3>
Run Code Online (Sandbox Code Playgroud)

但我得到的错误无法解决T1,2,3上的符号...导出表单界面的正确方法是什么?

McG*_*gle 7

您必须在实现类中指定类型参数.您可以保持它们通用:

public class OwlAnnotation2<T1, T2, T3> : IOwlAnnotation2<T1, T2, T3>
Run Code Online (Sandbox Code Playgroud)

或使它们具体化:

public class OwlAnnotation2 : IOwlAnnotation2<string, int, bool>
Run Code Online (Sandbox Code Playgroud)

  • 第二个例子不是合法的C#代码.我认为你的意思是在接口上指定具体类型,而不是像这样的类:`public class OwlAnnotation2:IOwlAnnotation2 <string,int,bool>` (4认同)