C# Web API Mapster基本使用

安装包:Mapster

1.注册

复制代码
MyRegister.Scan(); // 全局配置
//builder.Services.AddMapster(); // 需要安装Mapster.DependencyInjection包
builder.Services.AddScoped<IMapper,Mapper>();

2.配置(可不进行配置直接使用也行)

cs 复制代码
public class MyRegister : IRegister
{
    public static void Scan()
    {
        TypeAdapterConfig.GlobalSettings.Scan(typeof(MyRegister).Assembly);
    }
    public void Register(TypeAdapterConfig config)
    {
        config.ForType<MenuListDto, MenuList>()
                .Map(dest => dest.Name,src=>src.Describe) // 将Describe映射给Name
                .IgnoreNullValues(true)//忽略空值映射
                .Ignore(t=> t.Id); // 忽略ID
        config.ForType<User, UserDto>().Ignore(t => t.Id);
    }
}

3.使用

cs 复制代码
 public class DemoServicer:IDemoServicer
 {
	private ISqlSugarClient _sqlSugarClient;
     private IMapper _mapper;
     /// <summary>
     /// 
     /// </summary>
        /// <param name="sqlSugarClient"></param>
     /// <param name="mapper"></param>
     public MenuListServicer(IMapper mapper,ISqlSugarClient sqlSugarClient)
     {
         _mapper = mapper;
            _sqlSugarClient = sqlSugarClient;
     }
	 public MenuListDto[] GetList()
	 {
        var arr =  _sqlSugarClient.Queryable<MenuList>().ToArray();
		return arr.Adapt<MenuListDto[]>();
		//或者直接使用
		return _mapper.Map<MenuListDto[]>(arr);
		
	 }
 }

属性页可以添加特性进行忽略[AdaptIgnore]

相关推荐
LostXerxes2 小时前
封装与属性
c#
叫我詹躲躲2 小时前
偷偷收藏!前端老鸟绝不外传的150个JS插件,让你效率翻3倍…
前端·vue.js
会豪2 小时前
如何让自己的前端项目更优雅
前端
LostXerxes2 小时前
C#类与对象
c#
uhakadotcom2 小时前
致新人:如何编写自己的第一个VSCode插件,以使用@vscode/vsce来做打包工具为例
前端·面试·github
流***陌2 小时前
用工招聘小程序:功能版块与前端设计解析
前端·小程序
之恒君2 小时前
typescript(tsconfig.json - esModuleInterop)
前端·typescript
夏天19952 小时前
React:聊一聊状态管理
前端·javascript·react.js
李剑一2 小时前
低代码平台现在为什么不行了?之前为什么行?
前端·面试