2012-04-27 94 views
3
public partial class Foo 
{ 
    public struct ContainerOne 
    { 
     public const long Sub1 = 1; 
     public const long Sub2 = 2; 
    } 

    public struct ContainerTwo 
    { 
     public const long Sub3 = 3; 
     public const long Sub4 = 4; 
    } 

} 

是否有任何方法可以使嵌套的foreach獲取每個容器名稱,並使用每個屬性名稱+值的inne循環?通過poco級屬性循環

希望你明白了,否則生病了,謝謝!

回答

5

是的,是這樣的:

var fooType = typeof(Foo); 
foreach(var type in fooType.GetNestedTypes()) 
{ 
    Console.WriteLine(type.Name); 
    foreach(var field in type.GetFields()) 
    { 
     Console.WriteLine("{0} = {1}",field.Name,field.GetValue(null)); 
    } 
} 

活生生的例子:http://rextester.com/PNV12550

+0

大,看起來像我需要什麼。 2個快速問題:1.如何過濾第一個循環以僅查找結構屬性? 2.'type.GetFields()'需要一個參數,我該怎麼通過?謝謝 – Johan 2012-04-27 08:07:57

+0

忽略第二個問題,我偶然使用'GetField'而不是'GetFields()':) – Johan 2012-04-27 08:13:11

+0

您可以將外部循環更改爲'fooType.GetNestedTypes()。其中​​(t => t.IsValueType)'查找只是結構。 – Jamiec 2012-04-27 08:23:45