请考虑以下示例:
namespace Test
{
interface IContract : IContract<object> { }
interface IContract<T>
{
void Definition(T data);
}
public class SomeClass : IContract, IContract<SomeContractClass>
{
public void Definition(SomeContractClass data)
{
// ...
}
}
public class SomeContractClass { }
}
我想我应该通过提供
Definition(SomeContractClass data)
来满足接口,因为正如MDSN中所述:在c_的统一类型系统中,所有类型,预定义的和
用户定义的引用类型和值类型,直接继承或
间接从对象。
但是编译器要求我显式地定义它:
错误1“test.someClass”未实现接口成员
'测试.icontract.definition(对象)'
最佳答案
您正在实现接口IContract
。
如果我们将继承权扁平化,我们可以看到IContract
基本上是这样的:
interface IContract
{
void Definition(object data);
}
您没有提供与签名匹配的方法-您提供的方法采用
void Definition (object data)
。因此,您将得到声明的错误消息。但是,我认为潜在的问题是,您的类同时实现了
SomeContractClass
和IContract
(这与说IContract<T>
和IContract<object>
是一样的)。我认为你的设计需要一些工作…