Мои подклассы не могут маскироваться под базовый класс при удовлетворении требований интерфейса. Например:
class MyBaseClass
{}
class MySubClass : MyBaseClass
{}
interface MyInterface
{
MyBaseClass someFunction();
}
class MyImplementation : MyInterface
{
public MySubClass someFunction() { return null; }
}
Генерирует следующую ошибку:
«MyNamespace.MyImplementation» не реализует элемент интерфейса «MyNamespace.MyInterface.someFunction ()». «MyNamespace.MyImplementation.someFunction ()» не может реализовать «MyNamespace.MyInterface.someFunction ()», поскольку у него нет соответствующего возвращаемого типа «MyNamespace.MyBaseClass».
Это также проблема с требованием интерфейсов против реализаций. Например, если у меня есть интерфейс с функцией, которая возвращает IList, моя реализация не может вернуть List - она ДОЛЖНА вернуть IList.
Я что-то не так делаю или это ограничение интерфейсов C #?