C# - 接口通用方法约束以匹配派生类型

时间:2017-09-05 07:56:56

标签: c# generics inheritance interface constraints

假设我有一个接口IA,其中包含一个名为Foo的通用方法。

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

我的约束如何实现呢?

1 个答案:

答案 0 :(得分:7)

你必须这样做:

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

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

这是强制执行接口成员通用类型的唯一方法。