假设我有一个接口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;
}
我的约束如何实现呢?
答案 0 :(得分:7)
你必须这样做:
public interface IA<T>
{
int Foo(T otherType);
}
class A : IA<A>
{
public int Foo(A otherType)
{
return 42;
}
}
这是强制执行接口成员通用类型的唯一方法。