2016-03-19 5 views
-2

ich die folgende Methode bin mit Feldern aufzuzählen meiner classes-Dynamisch aufzuzählen Felder aus Liste <T>

EnumerateFields(typeof(Student)); 

void EnumerateFields(Type type) 
{ 
    PropertyInfo[] props = type.GetProperties(); 
    foreach (PropertyInfo prp in props) 
    { 

    } 
} 

Es funktioniert gut.

Jetzt möchte ich die gleiche Aufgabe aus einer Liste <> tun. Pseudocode-

EnumerateFields(List<Student>); 

void EnumerateFields(List<T>) 
{ 

} 

Gibt es eine Möglichkeit, es zu tun?

+1

Was macht Sie denken, Sie müssen mehr tun, als 'Student' durch' List 'im 'typeof'-Operator zu ersetzen? –

+0

Meinst du die Eigenschaften der Liste? Wenn ja, hast du gerade einen Tippfehler gemacht. Wenn nicht, erkläre, was du willst. –

Antwort

2

Ich nehme an, Sie so etwas wie dies wollen:

void EnumerateFields<T>(List<T> input) 
{ 
    PropertyInfo[] props = typeof(T).GetProperties(); 
    foreach (var r in input) 
    {  
     foreach (PropertyInfo prp in props) 
     { 
      Console.WriteLine(prp.Name + " = " + prp.GetValue(r)); 
     } 
    } 
} 
0

Wenn Sie sicher sind, sind Sie in List<T> vorbei, können Sie immer noch die Eigenschaften von T wie erhalten:

private void EnumerateFields(Type type) 
{ 
    Type subType = type.GetGenericArguments()[0]; 

    PropertyInfo[] props = subType.GetProperties(); 
    foreach (PropertyInfo prp in props) 
    { 
     // your logic here 
    } 
} 
+0

Sie durchlaufen die Elemente in der Liste nicht, aber Sie gehen ihre Eigenschaften durch. –

Verwandte Themen