AutoMapperについて既存の分かりやすい記事を引用しながら、AutoMapperの基礎的な使い方から実際のアプリ開発での使い方をまとめた。
0. AutoMapperとは
AutoMapperは、異なるオブジェクト間のデータ移行を容易化できるNugetパッケージ。
1. AutoMapperの基礎的な使い方
AutoMapperは、簡単なルールでのマッピングについては、デフォルトで自動マッピングを行ってくれるので、開発者がマッピング定義を明記する必要がない。
例えば同名プロパティへのマッピングや、基本的な型変換はデフォルトでサポートされている。
別名プロパティや異なる階層へのマッピング、マッピングの際にデータ加工を行いたい場合など、マッピングルールを独自に細かく決めたいケースではマッピング定義を明記することで対応可能となる。
参考記事
https://gist.github.com/devlights/29ba85e39e84858bee47
https://medium.com/@josiahmahachi/simplify-object-mapping-in-net-with-automapper-b7fd1569fe2b
2. AutoMapperの実践的な使い方
AutoMapperを実際の.NET開発で使用する場合、Profileを継承したMapperProfileクラスを作成する。そしてそのコンストラクタにマッピング定義を記述する。
3. フレームワークにDIを導入する
実際の.NET開発ではDIコンテナを利用することが多いが、フレームワークによってはデフォルトでDIコンテナを使えるようになっていない。
そのためDI機能を提供するパッケージを導入し、エントリポイントでDI登録を行うようにコードを記述する必要がある。
↓WPFでの例
4. AutoMapperをDIする
AutoMapperもDIに対応しており、その記述方法は下記記事のStartup.csの記述が参考になる。
5. その他メモ
平坦化(何かに使えそう)
既存のオブジェクトにマッピングする
「Mapper.Mapメソッドは新しくオブジェクトを作成する以外にも、既存のオブジェクトを引数で指定することでコピーも可能になってます。」(これやりたかった!!)
https://blog.shibayan.jp/entry/20130203/1359898568
名前変換ルールをカスタマイズする
デフォルトで自動マッピングされるのはプロパティ名が全く同じ場合などだが、以下の記事ではマッピングルールを独自にカスタマイズしている。
こちらの記事では、既存のNamingConventionクラスを使い、スネークケースからパスカルケースへのマッピングを行うように構成している。
こちらの記事では、INamingConventionを実装する自作クラスを使い、スネークケースからパスカルケースへのマッピングを行うように構成している。