如何在类中迭代引用变量

时间:2016-07-08 05:44:45

标签: c#

我尝试使用代码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[]

来访问这3个班级

但是我可以使用

访问它
        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; }

1 个答案:

答案 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()