やりたいこと
デバッグやログ出力でクラスの内容(プロパティ)を出力したい場合に
いちいち自分で内容を出力するメソッドを実装するのは面倒だし
プロパティが増えた時にメンテナンスが面倒です。
リフレクションで出力する方法もスマートさに欠けます。
JavaではlombokというライブラリがtoStringの自動生成をしてくれるのは有名ですよね。
https://blog.y-yuki.net/entry/2016/09/30/003000
lombokを知った後でC#でも同じようなことがしたいと思い
.NET(C#,VB.NET)に同じようなものがないか探してみました。
意外に見つかりずらかったのですが(なのでこの記事を書いた)、
ありました。
ToString.Fody
見つけたライブラリはこれ。
ToString.Fody
github:https://github.com/Fody/ToString
nuget:https://www.nuget.org/packages/ToString.Fody/
nugetでは4万越え(2018/11時点)ぐらいのダウンロードがあるので
知ってる人は知ってるようです。
使い方
githubのページ参照ですが、簡単に書きます。
https://github.com/Fody/ToString
1.インストール
nugetからコマンドラインでもGUIでもお好きな方法でプロジェクトに追加してください
2.設定ファイルの追加
プロジェクト直下にFodyWeavers.xmlというファイルを追加。
<Weavers>
<ToString/>
</Weavers>
Fodyのライブラリをすでに使っていて同ファイルがある場合は
<ToString/>
の行を追加。
3.アトリビュート(属性)を付与
ToStringを自動生成したいクラスに[ToString]
アトリビュートを付与します。
ToStringに含めないプロパティは[IgnoreDuringToString]
を付与します。
[ToString]
class TestClass
{
public int Foo { get; set; }
public double Bar { get; set; }
[IgnoreDuringToString]
public string Baz { get; set; }
}
4.出力例
{T: TestClass, Foo: Fooの内容, Bar: Barの内容}