Общий список общих объектов

Позволять'скажем, у меня есть объект, который представляет поле данных, этот объект нуждается в следующих свойствах: имя, тип, значение, длина. Вот объект:

class Field
{
    public string Name { get; set; }
    public Type Type
    {
        get
        {
            return typeof(T);
        }
    }
    public int Length { get; set; }
    public T Value { get; set; }
}  

Я использовал дженерики, потому что я хочу, чтобы пользователь кода мог назначать только значение определенного типа.

Теперь проблема в том, когда я хочу создать список полей.

Если я создам список, какList тогда мы можем присвоить любое значение данному полю в списке, и когда мы запрашиваем тип, мы получаем 'объект».

Дело в том, что в этом списке мне может понадобиться несколько полей со строками, несколько целых, даты и даже пользовательские объекты, у которых, в свою очередь, будет список полей ...

Является ли Generics хорошим решением для чего-то подобного? Если да, как бы я это реализовал? Если нет, что лучше?

---РЕДАКТИРОВАТЬ---

Просто чтобы добавить немного фона:

1. Я мог бы хотеть список полей, и каждое поле будет содержать различный тип данных, например так:

List lst = new List();
lst.Add(new Field());
lst.Add(new Field());
lst.Add(new Field());

2. Позже мне придется запрашивать эти объекты и их атрибуты автоматически в цикле, что-то вроде этого:

foreach(Field fld in lst)
{
    Type t = fld.Type;
    //do some other stuff
}

Ответы на вопрос(3)

Ваш ответ на вопрос