dnc(.Net core/Dot Net Core) 中使用automapper

最近在学习架构方面的知识,顺便先写一个基于dnc(.Net core/Dot Net Core)的单体架构.有用到Automapper,先记录一下
一.安装Nuget包:
1. AutoMapper
2. AutoMapper.Extensions.Microsoft.DependencyInjection
二.创建AutoMapper的profile类

public class MyProfile:Profile
{
    public MyProfile()
    {
        CreateMap<SysUser, SysUserDTO>();
        CreateMap<Advance, AdvanceDTO>();
    }
}

三.StartUp类中配置Automapper
1.如果使用单个profile类,在ConfigureServices方法中加入:

services.AddAutoMapper(config =>
{
    config.AddProfile<MyProfile>();
});

2.如果使用多个profile类或者profile在不同的项目中,则加入如下:

services.AddAutoMapper(config =>
{
    var types = Assembly
                    .GetEntryAssembly()
                    .GetReferencedAssemblies()
                    .Select(Assembly.Load)
                    .SelectMany(y => y.DefinedTypes)
                    .Where(type => typeof(Profile).GetTypeInfo().IsAssignableFrom(type.AsType())
                    && type.FullName.ToUpper().StartsWith("CHCMS")
                    && type.BaseType.Equals(typeof(Profile)));//CHCMS是我的项目命名空间开头部分,请修改为你项目的对应命名空间开头部分.
    var typeList = new List<Type>();
    foreach (var ti in types)
    {
        var type = ti.AsType();
        typeList.Add(type);
    }
    config.AddProfiles(typeList);
});

四.开始使用

var user = _dbContext.SysUser.Where(x => x.UserName.Equals(userName)).FirstOrDefault();
var userDto = Mapper.Map<SysUserDTO>(user);

发表评论

电子邮件地址不会被公开。 必填项已用*标注