从子类反映特定的属性类型

时间:2010-07-08 16:26:32

标签: c# reflection

我有一个很大的类,有许多不同类型的嵌套子类,如下所示:

class BigFooClass
{
    // Classes
    Foo InnerFoo {get; set;}
    Bar InnerBar {get; set;}
    Oof InnerOof {get; set;}
    Rab InnerRab {get; set;}

    // Simple Properties
    Decimal OuterDecimal {get; set;}
    Long OuterLong {get; set;}
{

这些内部类中的每一个都定义如下:

class Foo
{
   Decimal DecimalProp {get; set;}
   Long    LongProp {get; set;}
}
class Bar
{
   Decimal Decimal Prop {get; set;}
   Long    LongProp {get; set;}

} etc...

我想获得所有Decimal或Long属性的列表及其容器类型,如下所示:

BigFooClass.OuterDecimal是Decimal的类型

BigFooClass.OuterLong是Long的类型

Foo.OuterDecimal是Decimal的类型

Foo.OuterLong是Long的类型

Bar.OuterDecimal是Decimal的类型

Bar.OuterLong是Long的类型

我可以进入第一级但无法找到如何从PropertyInfo中反映出类型,这可能不是正确的方法。

有人能告诉我怎么做吗?

布赖恩

2 个答案:

答案 0 :(得分:1)

简单:

PropertyInfo pi = // get your property info here

pi.PropertyType;  // This is what you're looking for. (Type)

答案 1 :(得分:0)

将第一个级别设为PropertyInfo后,您需要递归到另一个级别并检查该类型中的属性。您可以通过查看PropertyInfo.PropertyType成员,然后使用该类型调用GetProperty / GetProperties并获取“第二级”属性来执行此操作。