Скажем, у меня есть объект, представляющий поле данных, этот объект нуждается в следующих свойствах: Name, Type, Value, Length. Вот объект:
class Field<T>
{
public string Name { get; set; }
public Type Type
{
get
{
return typeof(T);
}
}
public int Length { get; set; }
public T Value { get; set; }
}
Я использовал generics, потому что я хочу заставить пользователя кода только иметь возможность назначить значение определенного типа.
Теперь проблема в том, когда я хочу создать список полей.
Если я создам список типа List<Field<object>>
, тогда мы можем назначить любое значение для данного поля в списке, а когда мы запрашиваем Type, мы получим "object".
Дело в том, что в этом списке мне может понадобиться несколько полей, содержащих строки, немногие из которых содержат ints, даты и даже пользовательские объекты, которые, в свою очередь, будут иметь список полей...
Является ли Generics хорошим решением для чего-то подобного? Если да, то как мне его реализовать? Если нет, то что лучше?
--- EDIT ---
Просто добавьте еще немного фона:
1. Мне может понадобиться список полей, и каждое поле будет содержать разные типы данных, например:
List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());
2. Позже мне придется запросить эти объекты и их атрибуты автоматически в цикле, что-то вроде этого:
foreach(Field<object> fld in lst)
{
Type t = fld.Type;
//do some other stuff
}