0
可能重複:
TypeDescriptor.GetProperties() vs Type.GetProperties()反射 - 輸出任何對象的最佳方法?
如果我想這需要一個隨機對象和輸出(或以其他方式獲取)的方法,每包含的屬性,這將是最優雅和強大的道路採取?
這個問題來自於我之前提出的問題here以及提出替代方法的評論。
我以前做過的方式,使用
TypeDescriptor
和PropertyDescriptor
類:public static void extract(object obj) { List<string> properties = new List<string>(); foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(obj)) { string name = descriptor.Name; object value = descriptor.GetValue(obj); properties.Add(name + " = " value); } if (properties.Count == 0) output(obj.ToString()); else output(obj, string.Concat(properties)); }
所提出的替代方案,使用Type.GetProperties():
public static void extract(object obj) { List<string> properties = new List<string>(); foreach (PropertyInfo property in obj.GetType().GetProperties()) { string name = property.Name; object value = property.GetValue(obj, null); properties.Add(name + " = " value); } if (properties.Count == 0) output(obj.ToString()); else output(obj, string.Concat(properties)); }
到目前爲止,我還沒有和Reflection一起工作過,也沒有真正看到這兩者有什麼不同。從一個到另一個有什麼好處? 是否有另一種(更好)的方法來做到這一點?
確實,感謝您的鏈接。 – magnattic