2012-04-27 95 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