AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】
来源:互联网 发布:mysql 建库语句 utf8 编辑:程序博客网 时间:2024/06/12 03:31
值转换器
值转换器对另一种类型应用额外的转换。 在分配值之前,AutoMapper
将检查要设置的值是否有任何相关的值转换,并在设置之前应用它们。
您可以创建几个不同级别的值转换器:
Globally Profile Map Member
Mapper.Initialize(cfg => { cfg.ValueTransformers.Add<string>(val + "!!!");});var source = new Source { Value = "Hello" };var dest = Mapper.Map<Dest>(source);dest.Value.ShouldBe("Hello!!!");
Null替换
空替换允许您为目标成员提供一个备用值(如果源成员链中的任何位置为null)。 这意味着,不是从null映射,而是从您提供的值映射。
var config = new MapperConfiguration(cfg => cfg.CreateMap<Source, Dest>() .ForMember(destination => destination.Value, opt => opt.NullSubstitute("Other Value")));var source = new Source { Value = null };var mapper = config.CreateMapper();var dest = mapper.Map<Source, Dest>(source);dest.Value.ShouldEqual("Other Value");source.Value = "Not null";dest = mapper.Map<Source, Dest>(source);dest.Value.ShouldEqual("Not null");
假设替代者是源成员类型,并且会在到达目标类型之后经过任何映射/转换。
Map行为前后
偶尔,您可能需要在映射发生之前或之后执行自定义逻辑。 这应该是一个罕见的事情,因为在AutoMapper
之外完成这项工作更为明显。 您可以创建全局映射之前/之后
的操作:
Mapper.Initialize(cfg => { cfg.CreateMap<Source, Dest>() .BeforeMap((src, dest) => src.Value = src.Value + 10) .AfterMap((src, dest) => dest.Name = "John");});
或者,您可以在映射期间创建映射之前/之后
的回调:
int i = 10;Mapper.Map<Source, Dest>(src, opt => { opt.BeforeMap((src, dest) => src.Value = src.Value + i); opt.AfterMap((src, dest) => dest.Name = HttpContext.Current.Identity.Name);});
当您需要映射操作之前/之后的上下文信息时,后一种配置很有用。
阅读全文
0 0
- AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】
- AutoMapper官方文档(十一)【自定义类型转换器】
- AutoMapper官方文档(一)【入门】
- AutoMapper官方文档(三)【约定】
- AutoMapper官方文档(六)【投影】
- AutoMapper官方文档(十七)【配置】
- AutoMapper官方文档(十二)【自定义值解析器】
- AutoMapper官方文档(七)【配置验证】
- AutoMapper官方文档(二)【升级指南】
- AutoMapper官方文档(八)【内联映射】
- AutoMapper官方文档(九)【列表和数组】
- AutoMapper官方文档(十)【嵌套映射】
- AutoMapper官方文档(十四)【依赖注入】
- AutoMapper官方文档(十五)【映射继承】
- AutoMapper官方文档(十六)【可查询扩展】
- AutoMapper官方文档(四)【扁平化(分割)映射】
- AutoMapper官方文档(五)【反向映射和复杂化】
- MySQL官方文档中NULL和空值的区别
- 第九章:用正则表达式搜索
- Quartz报错
- map和forEach注意
- CSS3翻转效果
- c/c++ 指针透析问答
- AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】
- php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- HTML登录表单
- Oracle 删除重复数据只留一条
- POJ 1164 The Castle 深搜入门(城堡问题)
- CodeForces Gym101158H Animal Companion in Maze
- banner 图片自动轮播
- 文章标题
- Mybatis的动态拼接条件