У меня есть базовый абстрактный класс и производный классВозврата производного типа, когда возвращаемый тип базового типа C#
Базовых абстрактный класс
public abstract class BaseData: IListingData
{
private int? _photos;
public string DataKey { get; set; }
public abstract List<Images> Photos { get; set; }
}
производного класс
public class DerivedData1 : BaseData
{
public override List<Images> Photos
{
get
{ return new List<Images>(); } set {}
}
}
public class DerivedData2 : BaseData
{
public override List<Images> Photos
{
get
{ return new List<Images>(); } set {}
}
}
У меня есть службы функции:
public List<ListingData> FilterListings(PredicateHandler predicates)
{
//Retrieved from database and based on certain predicates, it will create List of DerivedData1 or DerivedData2
Return new List<DerivedData1>(); //This is where the ERROR is.
}
Я не могу вернуть Derived Type. Я попробовал кастинг, и я получил следующую ошибку компиляции. Невозможно преобразовать тип выражения «System.Collections.Generic.List < DerivedData1>» для возврата типа «System.Collections.Generic.List < ListingData>»
Я также попытался изменить тип возвращаемого значения функции службы FilterListings() к интерфейсу IListingData, но я все еще сталкиваюсь с ошибкой кастинга.
Я искал на других сообщениях Stackoverflow. Что отвечает на вопросы о возврате производного типа из базового класса. Но я думаю, что это другой сценарий.
Нижняя линия, Моя сервисная функция класса имеет тип возвращаемого Animal() и из внутри функции, я хочу, чтобы вернуть Dog()
Что мне не хватает?
Прочитайте это: https://msdn.microsoft.com/en-us/library/vstudio/dd799517%28v=vs.100%29.aspx –