循环遍历变量的所有属性。包括复杂类型

时间:2012-05-15 18:33:30

标签: c# asp.net .net-4.0

我有以下程序循环遍历变量的所有属性:

class Program
{
    static void Main(string[] args)
    {
        var person = new Person {Age = 30, Name = "Tony Montana", Mf = new Gender {Male = true,Female = false}};
        var type = typeof(Person);
        var properties = type.GetProperties();

        foreach (PropertyInfo property in properties)
        {
            Console.WriteLine("{0} = {1} : Value= {2}", property.Name, property.PropertyType, property.GetValue(person, null));
        }

        Console.Read();
    }
}

public class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public Gender Mf;
}


 public class Gender
  {
       public bool Male;
       public bool Female;
   }

当我运行它时,我得到以下输出:

"Age = System.Int32 : Value= 30"
"Name = System.String : Value= Tony Montana"

我没有看到我的复杂型人物。我如何循环我的对象人并获得person的类型.Mf和person.Mf(即person.Mf.Male等)的属性?提前致谢

2 个答案:

答案 0 :(得分:1)

Mf是一个字段,而不是属性。将其更改为:

public Gender Mf { get; set; }

或者,或者,使用反射来遍历所有公共字段(但我认为你最好只是将其作为属性)。

答案 1 :(得分:0)

你没有看到它导致它不属于财产。

要解决该问题,

  • 或将其定义为属性

  • 或使用反射恢复字段

    FieldInfo[] fields = type.GetFields()