我有以下程序循环遍历变量的所有属性:
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等)的属性?提前致谢
答案 0 :(得分:1)
Mf是一个字段,而不是属性。将其更改为:
public Gender Mf { get; set; }
或者,或者,使用反射来遍历所有公共字段(但我认为你最好只是将其作为属性)。
答案 1 :(得分:0)
你没有看到它导致它不属于财产。
要解决该问题,
或将其定义为属性
或使用反射恢复字段
FieldInfo[] fields = type.GetFields()