设为首页 加入收藏

TOP

在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射(三)
2019-10-09 19:59:09 】 浏览:120
Tags:ASP.NET Core 项目 使用 AutoMapper 进行 实体 映射
取所有继承于 Profile 的类
// var types = Assembly.Load(item).GetTypes() .Where(i => i.BaseType != null && i.BaseType.Name == parentType.Name); if (types.Count() != 0 || types.Any()) profiles.AddRange(types); } // 添加映射规则 if (profiles.Count() != 0 || profiles.Any()) services.AddAutoMapper(profiles.ToArray()); } return services; } }

  因为我是将需要加载的程序集信息放到配置文件中的,所以这里我们只需要将包含 Profile 规则的程序集添加到对应的配置项下面就可以了,此时如果包含多个程序集,则需要使用 `|` 进行分隔。

{
  "Assembly": {
    "Mapper": "aspnetcore-automapper-tutorial"
  }
}

  当我们将所有的实体映射规则注入到 IServiceCollection 中,就可以在代码中使用这些实体映射规则。和其它通过依赖注入的接口使用方式相同,我们只需要在使用到的地方注入 IMapper 接口,然后通过 Map 方法就可以完成实体间的映射,使用的代码如下。

public class PostAppService : IPostAppService
{
    #region Initialize

    /// <summary>
    ///
    /// </summary>
    private readonly IPostDomain _post;

    /// <summary>
    ///
    /// </summary>
    private readonly IMapper _mapper;

    /// <summary>
    /// ctor
    /// </summary>
    /// <param name="post"></param>
    /// <param name="mapper"></param>
    public PostAppService(IPostDomain post, IMapper mapper)
    {
        _post = post ?? throw new ArgumentNullException(nameof(post));
        _mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
    }

    #endregion Initialize

    /// <summary>
    /// 获取所有的文章信息
    /// </summary>
    /// <returns></returns>
    public IList<PostViewModel> GetPostLists()
    {
        var datas = _post.GetPostLists();
        return _mapper.Map<IList<PostModel>, IList<PostViewModel>>(datas);
    }
}

  至此我们就实现了在 ASP.NET Core 项目中使用 AutoMapper,实现后的结果如下图所示。

 三、总结

  本篇文章主要是演示下如何在 ASP.NET Core 项目中去使用 AutoMapper 来实现实体间的映射,因为之前只是在 .NET Fx 项目中有使用过这个组件,并没有在 .NET Core 项目中使用,所以这次趁着国庆节假期就来尝试如何在 .NET Core 项目中使用,整个组件使用起来其实是很简单的,但是使用后却可以给我们在实际的项目开发中省很多的事,所以就把自己的使用方法分享出来,如果对你有些许的帮助的话,不胜荣幸~~~

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇EF Core 实现读写分离的最佳方案 下一篇.NET开发者必须学习.NET Core

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目