Это упрощенная версия проблемы, которую я недавно пытался решить.У меня есть следующие два класса:
class Container { }
class Container<T> : Container
{
T Value
{
get;
private set;
}
public Container(T value)
{
Value = value;
}
public T GetValue()
{
return Value;
}
}
Теперь я хочу сделать:
Container<int> c1 = new Container<int>(10);
Container<double> c2 = new Container<double>(5.5);
List<Container> list = new List<Container>();
list.Add(c1);
list.Add(c2);
foreach (Container item in list)
{
Console.WriteLine(item.Value);
Console.WriteLine(item.GetValue());
}
Каков наилучший способ реализовать эту функцию?Это вообще возможно?Думаю, у меня есть решение этой проблемы, но я считаю, что это обходной путь, и я ищу какой-то шаблон проектирования.
Заранее благодарю за ваши ответы, Михал.
PS
Я пробовал с интерфейсами, виртуальными функциями, абстрактными классами, абстрактными функциями;даже создание функций в суперклассе, которые будут вызывать свойства реального типа по имени (используя отражение) ... Я до сих пор не могу достичь того, чего хочу ...