Необходимо иметь типобезопасную сумку предметов, которые реализуют общий интерфейс.
Желание сделать что-то вроде:
var stringItem = new IItem<string>();
var numberItem = new IItem<int>();
var items = new List<IItem<T>>(); //T of course doesn't accomplish what I want
items.Add(stringItem);
items.Add(numberItem);
Что-то вроде:
interface IItem
{
object Value { get; set; }
}
//Update: 2009-03-19 03:08 PM MST
//Added the following interface for clarity of my question
interface IItem<T> : IItem
{
new T Value { get; set; }
}
Тогда я мог бы:
var items = new List<IItem>();
Но я теряю безопасность типов в своей сумке. Итак, я подумал о Dictionary
:
var dict = new Dictionary<Type, List<IItem<T>>>(); //T is wrong again
dict.Add(typeof(string), new List<IItem<string>>); //that sure looks nice