スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C#でオブジェクトを再帰的にダンプする

  • 2016/02/24 02:11
  • Category: C#
個人的に使っていたダンプクラスを手直ししたので、ついでにGitHubに挙げておきました。
https://github.com/KkGh/DebugLib/blob/master/Dumper.cs
DebugLib.Dumperがそのクラスです。
リポジトリには他にもいくつかクラスが入ってますが、特に参照はしていないのでDumper.csだけで利用できます。

ダンプ用メソッドはDump()とDumpToString()の2つです。2つともobjectの拡張メソッドにしているので、instance.Dump()でコンソールへ出力、instance.DumpToString()でstringを返します。
クラスならプロパティを、コレクションなら各要素をリフレクションで再帰的に列挙します。
基本的なフォーマットは「プロパティ名 = 値 (値の型)」ですが、コレクションの要素を列挙する場合には「[インデックス] 値 (値の型)」となります。

サンプル


staticプロパティでインデントサイズや型の表示・非表示などを設定できます。
DateTimeのように、そのままダンプするとやたら長い結果を吐くクラスもあるので、TypesAsStringに型を追加すれば再帰せずToString()の結果だけを出力できるようにしました。


モノによってはかなり冗長な出力になりますが、デバッグ用に作ったものということで…
それと今の処理ではコレクションが持つプロパティ(List<T>.Countなど)を表示できないので、今後色々と変更するかもしれません。
スポンサーサイト

Pagination

Trackback

Trackback URL

http://someprog.blog.fc2.com/tb.php/16-bb6cd1d0

Comment

Post Your Comment

コメント登録フォーム
公開設定

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。