LoginSignup
2
2

More than 5 years have passed since last update.

Javaのlombokのように.NETでToStringを自動生成するライブラリ

Last updated at Posted at 2018-11-05

やりたいこと

デバッグやログ出力でクラスの内容(プロパティ)を出力したい場合に
いちいち自分で内容を出力するメソッドを実装するのは面倒だし
プロパティが増えた時にメンテナンスが面倒です。
リフレクションで出力する方法もスマートさに欠けます。

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というファイルを追加。

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の内容}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2