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]

相关推荐
大飞pkz1 天前
【设计模式】解释器模式
开发语言·设计模式·c#·解释器模式
练习时长一年1 天前
Bean后处理器
java·服务器·前端
excel1 天前
Vue 中 v-if 与 v-for 的优先级及最佳实践(Vue2 / Vue3 对比)
前端
吃饭最爱1 天前
tomcat的功能和作用
前端
ObjectX前端实验室1 天前
【图形编辑器架构】:编辑器的 Canvas 分层事件系统
前端·canvas·图形学
真的想不出名儿1 天前
登录前验证码校验实现
java·前端·python
小高0071 天前
前端如何优雅地生成唯一标识?——一份跨环境 UUID 工具函数的封装与实战
前端·javascript·vue.js
云舟吖1 天前
Playwright的元素定位器
前端
我是日安1 天前
从零到一打造 Vue3 响应式系统 Day 24 - Watch:Options
前端·javascript·vue.js
浅浅的学一下1 天前
实现在富文本中直接Ctrl+C复制图片并自动上传,并支持HTML格式的图片的复制
前端