• .NET5.0 MVC AutoMapper 基本使用


    安装

    安装 NuGet 包

    install-package AutoMapper
    install-package AutoMapper.Extensions.Microsoft.DependencyInjection
    

    第一个是 AutoMapper 的包。

    第二个是扩展包,可以使用 AddAutoMapper() 方法


    使用

    前置

    这里创建两个示例,以用于相互映射。

    public class User
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    public class UserDto
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    

    配置

    创建一个 MapperProfile 类,继承 AutoMapper.Profile ,接着在其构造函数中创建映射。

    //创建一个 自定义Profile 类,继承 AutoMapper.Profile
    public class MapperProfile : Profile
    {
        public MapperProfile()
        {
            //配置映射(基本)
            CreateMap<User, UserDto>();
            //配置映射:这样映射的结果 dto.Name = user.ID + user.Name
            CreateMap<User, UserDto>()
                .ForMember(dest => dest.Name, opt => MapFrom(src => str.ID.ToString() + src.Name));
            //其他配置:驼峰命名与Pascal命名的兼容
            DestinationMemberNamingConvention = new PascalCaseNamingConvention();
            SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
        }
    }
    

    Startup.cs 中注册服务。

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAutoMapper(typeof(MapperProfile));
        //……其他代码
    }
    

    注意 :上述写法,实际上是找到 MapperProfile 所在程序集,然后扫描程序集所有继承 Profile 的 class(若同一个程序集多次出现,会重复配置。重复配置目前未发现对映射有影响)。


    使用

    在控制器中使用。

    public class HomeController : Controller
    {
        private readonly IMapper _mapper;
        
        public HomeController(IMapper mapper)
        {
            _mapper = mapper;
        }
        
        [HttpGet]
        public UserDto GetUser()
        {
            User user = new User(){ ID = 1, Name = "名字" };
            var dto = _mapper.Map<User,UserDto>(user);
            return dto;
        }
    }
    

    参考来源

    ASP.NET.Core中使用AutoMapper

  • 相关阅读:
    HDU-4248 A Famous Stone Collector 组合数学 DP
    HDU
    暑期训练1 Gym
    暑期训练1 Gym-102623L Lottery Tickets 模拟 贪心构造
    暑期训练2 Gym
    poj-1011 sticks(搜索题)
    hdu-2553 N皇后问题(搜索题)
    poj-2236 wireless network(并查集)
    poj-1700 crossing river(贪心题)
    poj-3278 catch that cow(搜索题)
  • 原文地址:https://www.cnblogs.com/clis/p/14764829.html
Copyright © 2020-2023  润新知