Зачем мне нужно явное объявление интерфейса здесь? (С #)
Я пытаюсь реализовать очень простой интерфейс и использовать его для доступа к свойству типа, к которому сам доступ осуществляется через интерфейс, например так:
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; }
}