为什么我在这里需要一个显式的接口声明? (C#)

时间:2015-10-04 23:14:48

标签: c# interface explicit-interface

我试图实现一个非常简单的接口,并使用它来访问一个类型的属性,该类型本身通过如下接口访问:

interface ITest
{
    IOther Other { get; }
}

interface IOther { }

class Other : IOther { }

class Test : ITest
{
    public Other Other { get; set; }
}

但是我收到以下构建错误:

Error   13  'Test' does not implement interface member 'ITest.Other'.   'Charger.Shared.Test.Other' cannot implement 'ITest.Other' because it does not have the matching return type of 'IOther'.

现在我明白错误在说什么,但我不明白为什么。 '其他'实施' IOther'那问题为什么呢?

一个不完美的解决方案是明确实现接口:

class Test : ITest
{
    public Other Other { get; set; }

    IOther ITest.Other
    {
        get { return this.Other; }
    }
}

为什么需要这个样板?

感谢。

编辑:假设在我遇到此问题的实际非示例代码中,声明Test不是一个选项:

class Test : ITest
{
    public IOther Other { get; set; }
}

0 个答案:

没有答案