我想知道是否有.Net中的內置功能可以輸出(在運行時)給定對象中的所有屬性和值,並且如果可能的話甚至包括子對象。查看所有對象的屬性和值(包括子對象)
我在思考Reflection或XML Serializion,看到some people mentioned JSON,但無法真正弄清楚如何以正確的方式做到這一點......有誰知道這是否可能是.Net中的內置功能,或者如果有一個很好的例子/工具,或者已經這樣做,或者可以指引我朝着正確的方向發展?
我想知道是否有.Net中的內置功能可以輸出(在運行時)給定對象中的所有屬性和值,並且如果可能的話甚至包括子對象。查看所有對象的屬性和值(包括子對象)
我在思考Reflection或XML Serializion,看到some people mentioned JSON,但無法真正弄清楚如何以正確的方式做到這一點......有誰知道這是否可能是.Net中的內置功能,或者如果有一個很好的例子/工具,或者已經這樣做,或者可以指引我朝着正確的方向發展?
您可以使用XmlSerializer類或採取一看JSON.Net框架。
順便說一句,請參閱http://msdn.microsoft.com/en-us/library/ms681382%28VS.85%29.aspx((: – abatishchev
@abatishchev hahahaha'System.InvalidOperationException' – Alechandro
@Alechandro,因爲我看到其他人在說什麼,似乎正確的方式是去這裏2種方法之一... HOPEFULLY有人有更好的建議,但這似乎是迄今爲止我能找到的最好的。謝謝! –
使用Reflection。
要查看所有的公共屬性和值的對象:
foreach(var prop in obj.GetType().GetProperties()) //note: you can pass in binding flags to GetProperties to get static, private, etc properties
{
var propVal = prop.GetValue(obj);
//prop has information such as Name, PropertyType
//propVal is the value of that property for obj
}
謝謝@Mohammed - 即使我想我可以寫一個循環,我馬爾科想知道是否有一個預先創建的工具/ .Net功能,只是吐出所有信息n關於在我的對象中保存的數據,因爲我認爲否則,我將不得不編寫數十個case語句來獲取子對象數據(例如,假設我有一個'List(DataRow)'或類似的東西),我只是想知道是否有一個預先設置的工具已經具備了這種功能/知道如何從最常見的對象類型中提取正確的屬性並將它們的值抽出... –
我明白了。對於像IEnumerable/IList/etc這樣的情況,你可能會做一些事情,比如檢查prop.Name.BeginsWith(「ICollection」),然後將其轉換爲ICollection
爲好主意+1,但事實證明'XMLSerialization'被證明是我採取的最佳途徑 - 謝謝! –
爲了什麼目的?調試?序列化? –
反射確實可以做到這一點,這就是Reflector和DotPeek的工作原理。 – PinnyM
對不起,@Matthew,用於調試目的 –