AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】
2017-11-28 16:39
357 查看
值转换器
值转换器对另一种类型应用额外的转换。 在分配值之前,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); });
当您需要映射操作之前/之后的上下文信息时,后一种配置很有用。
相关文章推荐
- AutoMapper官方文档(十一)【自定义类型转换器】
- AutoMapper官方文档(一)【入门】
- Welcome to Swift (苹果官方Swift文档初译与注解十三)---84~89页(第二章)
- MySQL官方文档中NULL和空值的区别
- 天杀的android官方文档——mapview只显示网格的问题
- AutoMapper官方文档(三)【约定】
- AutoMapper官方文档(十八)【条件映射,开放泛型,了解你的映射】
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
- Hadoop Map/Reduce教程(官方文档)
- Autofac官方文档(十三)【捕获依赖】
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
- AutoMapper官方文档(四)【扁平化(分割)映射】
- AutoMapper官方文档(六)【投影】
- Flume官方文档翻译之(十三)
- AutoMapper官方文档(十四)【依赖注入】
- Spring 4 官方文档学习(十三)集成其他web框架
- 【cocos2d-js官方文档】十三、CCSAXParser.js
- AutoMapper官方文档(八)【内联映射】
- Gora官方文档之二:Gora对Map-Reduce的支持