LoginSignup
2
3

AutoMapperの概要と使い方

Last updated at Posted at 2024-05-26

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を実装する自作クラスを使い、スネークケースからパスカルケースへのマッピングを行うように構成している。

2
3
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
3