PropertyInfo的.Net反射属性信息

时间:2013-05-03 17:39:11

标签: c# .net generics system.reflection propertyinfo

我有类似下面的类结构,

Class A
{ 
     ClassB objB {get; set;}
     int data {get; set;}
}
Class B
{
     int x {get; set;}
     int data {get; set;}
}

现在我需要在A类上使用反射,将以下输入保存到A类对象(例如:input => data = 10; x = 15; data = 20)

问题:当我这样做时,PropertyInfo [] p = typeof(ClassA).GetProperties()

我在p。

中得到[objB,data]

但我需要深入研究任何上述结构的基本数据类型,这就是我需要的东西,

[数据(来自A类),x(来自B类),数据(来自B类)]这是我的第一个要求

第二个要求:一旦达到上述要求,我如何区分数据(来自A类)和数据(来自B类)。

2 个答案:

答案 0 :(得分:0)

好问题。

您可以编写一个递归算法,该算法贯穿第一个类的属性并继续挖掘*,而属性的类型property.PropertyType不是.NET程序集property.PropertyType.Assembly中定义的类型。因此,请检查程序集或您认为原始的类型列表。

答案 1 :(得分:0)

您可以尝试在p。

上使用foreach循环

检查第一个foreach中每个项目的类型,如果它与typeOf(B)匹配,则在此特定项目上执行propertyInfo以进入B类属性。现在,您可以先设置B类属性,然后再设置第二个属性A。