0

我有一个像下面这样的类结构,

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]。

但我需要深入了解上述任何此类结构的基本数据类型,即我需要类似的东西,

[data (from Class A), x (from Class B), data (from Class B)] 这是我的第一个要求

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

4

2 回答 2

0

好问题。

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

于 2013-05-03T17:53:51.693 回答
0

您可以尝试在 p 上使用 foreach 循环吗?

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

于 2013-05-03T18:11:46.180 回答