我有一个通用接口 (MyInterface<T>
),在下面的示例中由类 ChildA
实现:
public interface MyInterface<T>
{
MyObj<T> GetObj(); // Irrelevant
}
class ChildA : MyInterface<ChildA>
{
// Irrelevant:
MyObj<ChildA> GetObj() {
return new MyObj<ChildA>();
}
}
这个方法可以实现,但我需要确保
<T>
始终是 实现 类的类型,所以在这种情况下 T
应该始终是 ChildA
的类型,因为它是由ChildA
实现的。另一个正确的实现可以是这样的,例如:
class ChildB : MyInterface<ChildB> { ... }
但是当前,这种不正确的实现也是可能的,而事实上它不应该存在:
class ChildA : MyInterface<ChildB> { ... }
有没有办法强制执行这个规定呢?
public interface MyInterface { MyObj<MyInterface> GetObj(); }
- Dmytro Shevchenko