Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

やりたいこと

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

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の内容}
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away