配置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>();
    }
}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);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();
    }
}Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注