Generische Liste von generischen Objekten

Angenommen, ich habe ein Objekt, das ein Datenfeld darstellt. Dieses Objekt benötigt die folgenden Eigenschaften: Name, Typ, Wert, Länge. Hier ist das Objekt:

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

Ich habe Generika verwendet, weil ich den Benutzer des Codes zwingen möchte, nur einen Wert eines bestimmten Typs zuweisen zu können.
Jetzt ist das Problem, wenn ich eine Liste von Feldern erstellen möchte.
Wenn ich die Liste so erstelleList<Field<object>> Dann können wir einem bestimmten Feld in der Liste einen beliebigen Wert zuweisen, und wenn wir nach Type fragen, erhalten wir 'object'.
Die Sache ist - auf dieser Liste möchte ich vielleicht ein paar Felder, die Zeichenfolgen enthalten, ein paar Ints, Datumsangaben und sogar benutzerdefinierte Objekte, die wiederum eine Liste von Feldern enthalten ...
Ist der Generics eine gute Lösung für so etwas? Wenn ja, wie würde ich es implementieren? Wenn nicht, was ist ein besserer Weg?

---BEARBEITEN---
Nur um etwas mehr Hintergrund hinzuzufügen:
1. Ich möchte möglicherweise eine Liste von Feldern, und jedes Feld enthält einen anderen Datentyp, wie folgt:

List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());

2. Später muss ich diese Objekte und ihre Attribute automatisch in einer Schleife abfragen:

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage