Profileを設定する

Profileの役割:大量のマッピングルールを独立したクラスに切り出し、Mainメソッドに全部詰め込まないようにすることで、複数のエンティティマッピングを管理しやすくします。

1、カスタムProfileクラス

AutoMapperが提供するProfileを継承し、コンストラクタ内にマッピングルールを記述します。CreateMapを複数まとめて書くことができます。

using AutoMapper;

/// <summary>
/// マッピング設定クラス
/// </summary>
public class MappingProfile : Profile
{
    public MappingProfile()
    {
        // Person → People
        CreateMap<Person, People>();
        // People → Person、双方向マッピング
        CreateMap<People, Person>();
    }
}
// [コードブロック内の中国語翻訳]
// マッピング設定クラス
// Person → People
// 双方向マッピング
Code language: HTML, XML (xml)

方法1:初期化時にProfileを追加

Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Code language: JavaScript (javascript)

方法2:フル記述、Profileオブジェクトをインスタンス化

var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [コードブロック内の中国語翻訳]
// Profileオブジェクトをインスタンス化
Code language: JavaScript (javascript)

2、複数のProfileを読み込む

プロジェクトの業務が複雑になると、Profileクラスを複数に分割することがあります。一度にすべて登録できます:

Mapper.Initialize(x =>
{
    x.AddProfile<MappingProfile>();
    x.AddProfile<MappingProfile2>();
});
Code language: HTML, XML (xml)

完全なProgram例

class Program
{
    static void Main(string[] args)
    {
        // ========= 設定:Profileマッピングを読み込む =========
        Mapper.Initialize(x => x.AddProfile<MappingProfile>());

        // ソースオブジェクト、ターゲットオブジェクト
        Person p = new Person()
        {
            Age = 12,
            Name = "Tom",
            Birthday = DateTime.Now,
            Sex = true,
            Salary = 10000
        };

        People peo = new People()
        {
            Age = 36,
            Name = "Jack",
            Birthday = DateTime.Now,
            Sex = true,
            Salary = 102000
        };

        // 正向マッピング Person → People
        Mapper.Map(p, peo);
        // 反向マッピング People → Person
        Mapper.Map(peo, p);

        Console.WriteLine(peo.Name);
        Console.WriteLine(p.Name);
        Console.ReadKey();
    }
}
// [コードブロック内の中国語翻訳]
// 設定:Profileマッピングを読み込む
// ソースオブジェクト、ターゲットオブジェクト
// 正向マッピング Person → People
// 反向マッピング People → Person
Code language: JavaScript (javascript)

Profileを設定する

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です