5

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

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'.

现在我明白错误在说什么,但我不明白为什么。'Other' 实现了 '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; }
}
4

0 回答 0