Зачем мне нужно явное объявление интерфейса здесь? (С #)

Я пытаюсь реализовать очень простой интерфейс и использовать его для доступа к свойству типа, к которому сам доступ осуществляется через интерфейс, например так:

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; }
}

0 ответов

Другие вопросы по тегам