C# での複雑なオブジェクトのログ記録
コードをデバッグするとき、実行時にオブジェクトの状態を表示すると役立つことがよくあります。 Visual Studio のイミディエイト ウィンドウには、? 構文を使用してオブジェクトの書式設定されたコンテンツを表示する便利な方法が用意されています。 objectname.
ロギングの目的でコード内からこれを実現するには、いくつかのアプローチを考慮する必要があります。
JSON シリアル化:
ラージ オブジェクト グラフのダンプには JSON シリアル化が使用されます。これは、Newtonsoft.Json ライブラリを使用して実行できます。
using Newtonsoft.Json; public static class ObjectDumper { public static string Dump(object obj) { return JsonConvert.SerializeObject(obj); } }
イミディエイト ウィンドウで、次のコマンドを実行できます。
var logEntry = ObjectDumper.Dump(myObj);
JSON 構造を視覚化するには、logEntry を展開します。 [ローカル] ウィンドウで値を選択し、虫眼鏡の横にあるドロップダウン キャレットから [Json Visualizer] オプションを選択します。 icon.
Reflection と ToString():
もう 1 つのアプローチは、Reflection を使用してオブジェクトのプロパティと値にアクセスし、それらを文字列表現に手動で変換することです:
public static string Dump(object obj) { StringBuilder sb = new StringBuilder(); Type type = obj.GetType(); PropertyInfo[] properties = type.GetProperties(); sb.Append("Object of type: " + type.Name + "\n"); foreach (PropertyInfo property in properties) { sb.Append(property.Name + ": "); sb.Append(property.GetValue(obj)?.ToString() ?? "null"); sb.Append("\n"); } return sb.ToString(); }
その他オプション:
以上がデバッグのために複雑なオブジェクトを C# で効果的に記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。