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

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

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; }
}  

Я использовал дженерики, потому что я хочу, чтобы пользователь кода мог назначать только значение определенного типа.
Теперь проблема в том, когда я хочу создать список полей.
Если я создам список, какList<Field<object>> затем мы можем присвоить любое значение данному полю в списке, и когда мы запрашиваем тип, мы получаем «объект».
Дело в том, что в этом списке мне может понадобиться несколько полей со строками, несколько целых, даты и даже пользовательские объекты, у которых, в свою очередь, будет список полей ...
Является ли Generics хорошим решением для чего-то подобного? Если да, как бы я это реализовал? Если нет, что лучше?

---РЕДАКТИРОВАТЬ---
Просто чтобы добавить немного фона:
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
}

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

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