Вопрос новичка: как реализовать общий список 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, чтобы избежать кастинга.
Есть ли какой-то общий шаблон для решения этой проблемы?