.NET ヘルプ

AutoMapper C#(開発者向けの仕組み)

公開済み 2024年1月4日
共有:

Automapperは、複雑なオブジェクトモデル間でのデータ転送をより容易でメンテナンスしやすくするために設計された、C#の多用途かつ強力なライブラリです。 この記事では、Automapperがプロパティを効率的にマッピングし、複雑なオブジェクトモデルをフラット化し、ユーザードメインオブジェクトやデータ転送オブジェクトなどのさまざまなタイプのオブジェクトとどのように連携するかを探ります。

Automapper入門

C# のオートマッパーこれは、異なるオブジェクトタイプ間でのデータ変換と転送を簡素化するツールであるオブジェクトオブジェクトマッパーです。特にデータエンティティとそれらをデータ転送オブジェクトに変換するシナリオで役立ちます。(DTOs (データ転送オブジェクト)).

オートマッパーの主な特徴

  • オブジェクト間のマッピングの自動化: オートマッパーは、異なるオブジェクトタイプ間のマッピングを自動的に行います。
  • カスタマイズ可能なマッピング規則: デフォルト設定以外にも、特定のマッピング規則をカスタマイズできます。
  • プロパティのネスト対応: オートマッパーはネストされたプロパティのマッピングもサポートします。
  • パフォーマンスの最適化: オブジェクトのマッピングを効率的に処理し、高速なパフォーマンスを提供します。
  • 拡張性: 必要に応じて機能を拡張することができる設計になっています。
  • 強力な型安全性: マッピング時に安全な型チェックを提供し、ランタイムエラーを最小限に抑えます。

オートマッパーを使用することで、コードのシンプルさと可読性が向上し、開発の生産性を向上させることができます。

コードの簡素化: Automapperはプロパティのマッピングを自動化することにより、手動でコードを記述する必要性を大幅に削減し、エラーを防ぎ、時間を節約します。

マッピング構成の柔軟性: Automapperは、詳細なカスタマイズを可能にし、幅広いマッピングシナリオに対応できるマッピング構成を提供します。

性能効率: このライブラリは、大規模で複雑なオブジェクトモデルを扱っても、著しいパフォーマンスのオーバーヘッドを引き起こさないように設計されています。

AutoMapperの初め方

Automapper を利用するには、まず開発環境のソフトウェアパッケージ管理を支援するコンポーネントであるパッケージマネージャーコンソールを通じてインストールする必要があります。

パッケージ マネージャー コンソールによるインストール

パッケージマネージャーコンソールで簡単なコマンドを実行することで、プロジェクトにAutomapperを簡単にインストールできます:

Install-Package IronPdf

基本的なマッピング構成の設定

AutoMapperを使用する際の基本的なステップは、マッピング設定を定義することです。 以下の入力オブジェクトの指定が含まれます(ソース)プロパティは出力オブジェクトに転送されるべきです。(宛先).

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<SourceClass, DestinationClass>();
});
IMapper mapper = config.CreateMapper();
Dim config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of SourceClass, DestinationClass)()
End Sub)
Dim mapper As IMapper = config.CreateMapper()
VB   C#

Automapperを使用した高度なマッピング技術

Automapperの機能は、単純なプロパティ間のマッピングをはるかに超えています。 それは、より複雑なシナリオを巧みに処理することができます。

複雑なオブジェクトモデルのフラット化

Automapperの強みの一つは、複雑なオブジェクトモデルをフラット化する能力です。 この機能はネストされたオブジェクトを扱う際に特に有用であり、これらのネストされたプロパティを平坦化された宛先クラス構造にマッピングすることを可能にします。

多用途オブジェクトタイプ処理

AutoMapperは、ユーザードメインオブジェクト、DTO、さらにはビューモデルなど、さまざまなオブジェクトタイプ間で効率的にマッピングを行うことができ、さまざまなデータ転送ニーズに対応する多用途なソリューションを提供します。

実用的な使用例

Automapperの有用性をより理解するために、いくつかの実践的な例を見てみましょう。

例1: シンプルなマッピング

次のようなシナリオを考えてみましょう。ユーザーエンティティのプロパティをユーザーDTOにマッピングする必要がある場合:

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
public class UserDTO
{
    public string FullName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<User, UserDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.FirstName + " " + src.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class User
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
Public Class UserDTO
	Public Property FullName() As String
	Public Property Address() As String
	Public Property City() As String
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of User, UserDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.FirstName & " " & src.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
VB   C#

例 2: 複雑オブジェクトによる高度なマッピング

より複雑なシナリオでは、ネストされたユーザー詳細を持つ注文オブジェクトを簡略化された注文DTOにマッピングしてみましょう:

public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
public class Order
{
    public User OrderedBy { get; set; }
    // Other properties...
}
public class OrderDTO
{
    public string FullName { get; set; }
    // Other properties...
}
// Mapping Configuration
var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<Order, OrderDTO>()
       .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.OrderedBy.FirstName + " " + src.OrderedBy.LastName));
});
IMapper mapper = config.CreateMapper();
Public Class Order
	Public Property OrderedBy() As User
	' Other properties...
End Class
Public Class OrderDTO
	Public Property FullName() As String
	' Other properties...
End Class
' Mapping Configuration
Private config = New MapperConfiguration(Sub(cfg)
	cfg.CreateMap(Of Order, OrderDTO)().ForMember(Function(dest) dest.FullName, Function(opt) opt.MapFrom(Function(src) src.OrderedBy.FirstName & " " & src.OrderedBy.LastName))
End Sub)
Private mapper As IMapper = config.CreateMapper()
VB   C#

バージョン9.0から、AutoMapperは静的APIから移行しました(Mapper.Initialize(マッパー・イニシャライズ))インスタンスベースのAPIに。 この変更により柔軟性が向上し、特に依存性注入を使用する現代のアプリケーションにより適しています。 バージョン9.0よりも古いバージョンを使用している場合は、静的APIアプローチが適用されます。 しかし、新しいバージョンでは、上記の例に示されているインスタンスベースのAPIを採用することが推奨されます。

Iron Software スイート概要

についてIron Software Suite for .NETは、一連のライブラリを備えた堅牢なパッケージであり、それぞれが特定の目的を果たします。 PDFの作成、読み取り、および編集、HTMLからPDFへの変換、そして複数の言語で画像をテキストに変換する機能をカバーしています。 このスイートは様々な開発ニーズに対応しており、どのC#プロジェクトにも柔軟に追加できる製品です。

Iron Software Suiteの主要コンポーネント

1.PDF管理のためのIronPDFこのコンポーネントを使用すると、開発者はPDFの作成、読み取り、編集、署名が可能です。 また、HTMLをPDFに変換する機能も提供しており、ウェブベースのデータからレポートやドキュメントを生成する際に特に役立ちます。

![AutoMapper C# (開発者向けの動作方法): 図1 - IronPDF for .NET: C#用PDFライブラリ](/static-assets/pdf/blog/automapper-csharp-guide/automapper-csharp-guide-1.webp)
  1. IronXL.Excel ファイルハンドリング: IronXLを使用すると、Office Interopを必要とせずにExcelファイルを操作でき、データの操作や分析作業が効率化されます。

    Automapper C#(開発者向けの動作方法):図2 - IronXL for .NET:C# Excelライブラリ

  2. テキスト抽出のためのIronOCR画像からのテキスト抽出が可能で、127の多様な言語に対応しているため、国際的なプロジェクトに非常に柔軟に対応できます。

    AutoMapper C# (開発者向けの仕組み): 図3 - IronOCR for .NET: C# OCRライブラリ

    申し訳ありませんが、提供された内容が「4.」のみですでに終わっているようです。続きの内容があれば、それを提供していただくことが必要です。正確な翻訳を行うために、もう少し具体的な情報やテキストを入力していただけますか?QRとバーコードのサポートQRコードおよびバーコードの読み取りと書き込みを可能にするライブラリで、在庫管理、追跡、およびその他の関連業務の機能を強化します。

    オートマッパー C# (開発者向けの動作方法): 図4 - IronBarcode for .NET: C# バーコードライブラリ

AutoMapperとの相補性

'Automapper'はC#で異なるオブジェクトモデル間のプロパティをマッピングする際に優れていますが、ソフトウェアのライブラリAutomapperは、さまざまなデータ形式やデータ型を扱うツールを提供することで、機能を拡張します。例えば、Automapperを使ってユーザードメインオブジェクトをDTOに変換した後、IronPDFを使ってPDF形式で包括的なレポートを生成することができます。 同様に、Automapperを使用して抽出または変換されたデータは、Excelファイル操作のためにIronXLを使用してさらに操作または分析することができます。

結論

オートマッパーがC#開発者にとって非常に貴重なツールであり、オブジェクト間のマッピング作業を効率化します。 その堅牢なプロパティマッピング機能、複雑なオブジェクトモデルの処理、およびカスタマイズ可能なマッピング設定を提供することにより、効率的なソフトウェア開発に不可欠なツールとなっています。 オブジェクトモデルの複雑さを理解し、Automapperを特定のニーズに合わせて構成する方法を理解することは、どのプロジェクトでもその潜在能力を最大限に引き出すために重要です。

Iron SoftwareのIron Suite様々なライセンスオプションを提供しており、Iron Softwareの無料トライアルさまざまなプロジェクトのニーズに応じて。 ライセンスは、Lite、Plus、Professionalの3段階に分かれており、さまざまなチーム規模に対応し、包括的なサポート機能を提供します。 このスイートをAutomapperと統合することで、C#プロジェクトにデータ処理と文書操作機能を大幅に強化することができます。

< 以前
.NET Aspire(開発者向けの仕組み)
次へ >
C# 文字列分割 (開発者向けの仕組み)