2016-03-19 33 views
-2

枚舉領域。動態我用下面的方法來列舉我的類 -</p> <pre><code>EnumerateFields(typeof(Student)); void EnumerateFields(Type type) { PropertyInfo[] props = type.GetProperties(); foreach (PropertyInfo prp in props) { } } </code></pre> <p>它可以很好地從字段列表<T>

現在我想從列表<>中執行相同的任務。僞代碼 -

EnumerateFields(List<Student>); 

void EnumerateFields(List<T>) 
{ 

} 

有什麼辦法可以做到嗎?

+1

是什麼讓你認爲你需要做更多的事情,而不是用'typeof'運算符中的'List '替換'Student'? –

+0

你的意思是列表的屬性?如果是這樣,你只是犯了一個錯字。如果不是,請解釋你想要的。 –

回答

2

我想你想是這樣的:

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

如果你確定,你正在傳遞List<T>,你仍然可以得到的T屬性爲:

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

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

您不是在迭代列表中的項目,而是在走其屬性。 –

相關問題