2013-05-03 88 views
0

我有一个类结构类似下面的属性信息,NET反射一个的PropertyInfo

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

现在我需要使用反射上的一类,在下列输入保存到A类对象(例如:输入= >数据= 10; X = 15;数据= 20)

问题:当我做到这一点,的PropertyInfo [] p = typeof运算(ClassA的).GetProperties()

我得到[objB,数据] p中。

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

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

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

+2

您的设计可能是错的。 – SimpleVar 2013-05-03 17:46:17

+0

你能否详细说明一下,你是怎么使用反射的?也许有另一种方式。 – 2013-05-03 18:02:49

+0

这是一个Web服务,所以有几个请求,现在我需要一个通用的方法,以便基于请求类型我将能够建立一个请求,而不是每个reqtype的buildReq ..这就是为什么我需要反思 – user1810502 2013-05-03 18:57:29

回答

0

不错的问题。

你可以写,通过一流的性能运行,并不断挖掘递归算法*,而属性的类型property.PropertyType不是一个在.NET程序集property.PropertyType.Assembly定义。因此请检查程序集或您认为是原始类型的列表。

+0

如果其中一个成员是类型列表,列表属于mscorlib.dll但拥有本地程序集类......这真的很烂...我希望会有更直接的方法 – user1810502 2013-05-03 18:45:55

+0

也检查程序集将失败,我需要复制值到原始类型设置值的对象,再次做父母对象相同,这是一个痛苦 – user1810502 2013-05-03 18:46:59

0

你可以尝试在页面上使用foreach循环。

检查第一个foreach中每个项目的类型,如果它与typeOf(B)匹配,然后在这个特定项目上做一个propertyInfo以进入B类properties.Now,你可以先设置B类的属性, A.的属性