请考虑以下示例:

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)。因此,您将得到声明的错误消息。
但是,我认为潜在的问题是,您的类同时实现了SomeContractClassIContract(这与说IContract<T>IContract<object>是一样的)。我认为你的设计需要一些工作…

08-06 19:11