У меня есть следующиеНаследование интерфейса в качестве типа возвращаемого значения - не удается преобразовать выражение
public interface IAwesomeInterface
{
string Prop1 {get; set;}
string Prop2 {get; set;}
List<SomeObject> GetObjects();
}
public abstract class AbstractObject : IAwesomeInterface
{
public string Prop1 {get; set;}
public string Prop2 {get; set;}
public abstract List<SomeObject> GetObjects();
}
public class ConcreteObject1 : AbstractObject
{
public List<SomeObject> GetObjects()
{
return new List<SomeObject>();
}
}
public class ConcreteObject2 : AbstractObject
{
public List<SomeObject> GetObject()
{
//do some other stuff
return new List<SomeObject>();
}
}
и реализации:
public class ObjectFactory
{
public IAwesomeInterface GetObject()
{
return new ConcreteObject1();
}
}
я получаю сообщение об ошибке, что «не может преобразовать тип выражения ConcreteObject1 возвращать тип IAwesomeInterface "
Поскольку ConcreteObject1 наследует объект AbstractObject, не означает, что он реализует IAwesomeInterface и должен быть приемлемым возвратом стоимость?
FYI, возможно, была ошибкой копирования/вставки, но ваш метод 'ConcreteObject2.GetObject' является typo'd (должен быть' GetObjects', plural) –
Спасибо, это была опечатка для вопроса. Проблема заключалась в том, что я не переопределял абстрактный метод. – Mike