我可以为非通用接口使用嵌套合同类型:
[ContractClass(typeof(Foo.FooContracts))]
public interface IFoo
{
string Bar(object obj);
}
但是当我尝试使用通用接口做同样的事情时它会抱怨:
[ContractClass(typeof(Foo.FooContracts<>))]
public interface IFoo<T>
{
string Bar(T obj);
}
警告是:
合同类
Foo+FooContracts`1
和类型IFoo`1
必须具有相同的声明类型(如果有)。
如果我FooContracts
离开Foo
课堂,它会在没有警告的情况下编译。
- 为什么通用接口存在这种限制?
- 为什么非通用的限制不存在?