Вопрос новичка: как реализовать общий список List<Item>
, возвращающий элементы со свойством с именем Data, но возвращающий разные типы для разных подклассов? Я начал строить следующую иерархию, но это не ведет к цели.
abstract class Item
abstract class ItemGeneric<TData> : Item
class ItemText : ItemGeneric<string>
class ItemImage : ItemGeneric<Image>
Я создаю кучу экземпляров классов ItemText и ItemImage и добавляю их в общий список List<Item>
. Однако, как только я просматриваю список и хочу получить свойство Data, оно недоступно, поскольку (очевидно) оно было реализовано только на уровне иерархии класса ItemGeneric<TData>
, а не в классе Item.
Я хотел бы решить эту проблему без использования System.Object
, чтобы избежать кастинга.
Есть ли какой-то общий шаблон для решения этой проблемы?