什麼是屬性
public string Name { set; get; }
什麼是欄位
public string Name;
眼睛看起來的差別就是 { set; get; }
如果今天想要針對Class做個Foreach,抓取所有屬性與值
Person person = new Person() { Name = "MARS", Age = 20 };
foreach (var p in person.GetType().GetProperties())
{
var value = p.GetValue(person, null);
Console.WriteLine($"{p.Name}:{value}");
}
GetProperties裡面有可以放一下參數,像是
BindingFlags.Instance | BindingFlags.Public
這樣就可以只看到某些屬性就好
這樣也可以拿來比對,同樣是Person的物件,哪些欄位是一樣或是不一樣的,像下面這樣
Type type = typeof(Person);
var properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
foreach (var p in properties)
{
var a1 = p.GetValue(person1, null);
var a2 = p.GetValue(person2, null);
Console.WriteLine($"{p.Name}:{a1} vs {a2}");
}