我尝试使用代码PropertyInfo[]
,但代码没有获取任何属性。因为class1
内的属性只是一个参考变量
public readonly subClass1 sClass1;
public readonly subClass2 sClass2;
public readonly subClass3 sClass3;
public class1()//constructor
{
sClass1= new subClass1();
sbClass2= new subClass2();
sClass3= new subClass3();
}
我的问题是,我只能使用PropertyInfo[]
但是我可以使用
访问它 Type type = typeof(class1);
FieldInfo[] fields = type.GetFields();
var i = 0;
foreach (var field in fields)
{
var f = field.GetType().GetFields();
i++;
}
但是这段代码不起作用,因为我想工作,他们可以上课,但我无法获得每个subClass
的属性
我想要的是这样的东西
var f = class1.sClass1;
我的变量f现在将保存一个类的每个属性。
对不起,如果我不能解释清楚的话。如果您想问某事,请在下面发表评论
顺便说一下,这是每个subClass
public string X{ get; set; }
public string Y{ get; set; }
public string Width { get; set; }
public string Length { get; set; }
答案 0 :(得分:2)
你必须递归地进行
void GetFields(Type type)
{
foreach (FieldInfo fieldInfo in type.GetFields(BindingFlags.Instance
| BindingFlags.Public | BindingFlags.NonPublic)) {
Console.WriteLine("{0} {1}", fieldInfo.FieldType.Name, fieldInfo.Name);
if (fieldInfo.FieldType.IsClass)
GetFields(fieldInfo.FieldType);
}
您必须使用 field.FieldType
,而不是使用 field.GetType()