iT邦幫忙

2022 iThome 鐵人賽

DAY 11
1
Software Development

ASP.NET Core 30 天旅程系列 第 11

[Day11]- AutoMapper 類別轉換(2)

  • 分享至 

  • xImage
  •  

上一篇我們簡單的介紹了 AutoMapper 的方法,今天我們要進一步使用 Profile 將對應關係集中,以及.NET Core 中依賴注入(DI)AutoMapper。

Profile

依照我們的架構 NetCoreDemo.Utility 會有一個 Mappings 資料夾專門放 AutoMapper 對應的設定。
接著我們來建立一個繼承 AutoMapper 的 Profile 的 Mapping。

namespace NetCoreDemo.Utility.Mappings
{
    public class UserMapping : Profile
    {
        public UserMapping()
        {
            CreateMap<UserDTO, UserViewModel>();
        }
    }
}

接者我們可以使用 AddProfile 和剛剛建立的 Profile 來直接 Mapping

public IEnumerable<UserViewModel> GetUser(UserDTO m)
{
    var data = GetUserByAccName(m);

    var config = new MapperConfiguration(cfg => cfg.AddProfile<UserViewModel>());
    var mapper = config.CreateMapper();
    var result = mapper.Map<IEnumerable<UserViewModel>>(data);

    return result;
}

註冊 AutoMapper

NuGet 安裝 AutoMapper.Extensions.Microsoft.DependencyInjection

Program.cs

builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //找到全部Profile

註冊完成後,我們就能使用注入的方式來取得 Mapper,程式最終簡化如下

private readonly IMapper _mapper;

public UserService(IMapper mapper)
{
    _mapper = mapper;
}

public IEnumerable<UserViewModel> GetUser(UserDTO m)
{
    var data = GetUserByAccName(m);
    var result = _mapper.Map<IEnumerable<UserViewModel>>(data);

    return result;
}

是不是覺得變得超級簡潔!!再次推推AutoMapper


參考資料

那今天就到這邊囉,大家明天見!


上一篇
[Day10]- AutoMapper 類別轉換(1)
下一篇
[Day12]- ASP.NET Core Identity(1)
系列文
ASP.NET Core 30 天旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言