我記得前一段時間看到反射命名空間中有一些方法可以對所有對象的屬性遞歸地運行ToString()
並很好地將其格式化以供顯示。什麼是PHP var_dump的.NET等價物?
是的,我知道我想要的任何東西都可以通過調試器訪問,但我想知道是否有人知道該命令?
我記得前一段時間看到反射命名空間中有一些方法可以對所有對象的屬性遞歸地運行ToString()
並很好地將其格式化以供顯示。什麼是PHP var_dump的.NET等價物?
是的,我知道我想要的任何東西都可以通過調試器訪問,但我想知道是否有人知道該命令?
我想你要尋找的是/被稱爲ObjectDumper。它使用反射遍歷並輸出對象的所有不同屬性。我在學習LINQ的時候第一次聽說過它,Linq in Action書中的大部分例子都使用它。
雖然微軟似乎並未將它包含在Linq的最終版本中,但代碼依然存在。我做了它一個快速谷歌搜索,這裏是一個鏈接:
我當然可以看到在這樣的事情中的使用,但在.Net中你不會主要只是得到類型名稱列表(字符串,數組等)?大多數內置插件沒有預先寫好的「有用的」ToString()重載,是嗎?
示例代碼傾倒的對象及其屬性可以在這裏找到:
這裏是代碼自卸車和演示項目,展示瞭如何使用它的鏈接。 Download it here。
你可以自己寫。例如,使用Newtonsoft的JSON.net庫將其序列化爲json,並將該json寫入控制檯。下面是一個例子:
using Newtonsoft.Json;
static class Pretty
{
public static void Print<T> (T x)
{
string json = JsonConvert.SerializeObject(x, Formatting.Indented);
Console.WriteLine(json);
}
}
用法:
Pretty.Print(whatever);
雖然此代碼段可以解決的問題,[包括一個解釋](// meta.stackexchange.com/questions/114762 /解釋 - 完全基於代碼的答案)真的有助於提高你的文章的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess 2016-12-08 08:35:12
今天使用任何良好串行 – nawfal 2016-03-24 08:37:56