2010-07-08 91 views
0

我有许多不同类型的嵌套子类的一大类如下:反射特定属性类型

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

} etc... 

我想:

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;} 
{ 

每个内部类的定义如下以获得所有十进制或长整型属性及其容器类型的列表,如下所示:

BigFooClass.OuterDecimal是十进制类型

BigFooClass.OuterLong是龙

Foo.OuterDecimal的类型是小数

的类型

Foo.OuterLong是龙

Bar.OuterDecimal的类型是小数

Bar.OuterLong的类型是类型的长

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

任何人都可以告诉我该怎么做吗?

布赖恩

回答

0

一旦你有了第一级为PropertyInfo,你需要递归下降的另一个级别和类型中检查的属性。您可以通过查看PropertyInfo.PropertyType成员来完成此操作,然后使用该类型调用GetProperty/GetProperties并获取“第二级”属性。

+0

感谢里德。实际上,对我而言,缺少的一部分信息是使用PropertyType来获取较低级别类的类型,以便对属性进行迭代。我一直在试图获取PropertyInfo的属性! – Redeemed1 2010-07-08 19:29:06

+0

@ Redeemed1:很高兴帮助。使用反射时,几乎总是需要从System.Type开始工作。 – 2010-07-08 19:30:44

1

简单:

PropertyInfo pi = // get your property info here 

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

B,非常感谢。 @Reed Copsey在他的回复中强调了一些信息,所以我会给他答案,但我会为你回答这个问题。 – Redeemed1 2010-07-08 19:27:16

相关问题