c# – AutoMapper如何将对象A映射到对象B,具体取决于上下文

前端之家收集整理的这篇文章主要介绍了c# – AutoMapper如何将对象A映射到对象B,具体取决于上下文前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
调用所有AutoMapper大师!

我希望能够根据运行时的上下文将对象A映射到对象B.特别地,我想在一个映射情况下忽略某些属性,并且在另一种情况下映射所有属性.

我遇到的是Mapper.CreateMap可以在不同的映射情况下成功调用,一旦CreateMap被调用,特定的一对类型的映射被设置,并且后续的CreateMap调用不会随之改变,可能会描述映射不同.

我发现一个博客帖子主张Mapper.Reset()来解决问题,但是,Mapper类的静态性质意味着在发生碰撞和崩溃之前只是时间问题.

有没有办法做到这一点?

我想我需要的是每个appdomain一次调用Mapper.CreateMap,之后,可以调用Mapper.Map,提示应该包含/排除哪些属性.

现在,我正在考虑通过编写一个基于映射配置实例的非静态映射类来更改源代码.性能差,但线程安全.

我的选择是什么可以做什么Automapper似乎很有希望.

解决方法

Mapper类只是配置和MappingEngine对象之上的薄包装.您可以创建Configuration / MappingEngine对象的单独实例(仍然使用单例),并根据需要使用您选择的IoC容器加载正确的对象.

最好的选择还是使用不同的目的地类型.关于真正支持这一功能的真正困难的部分是类型地图的固有层次性.顶级对象可能具有映射配置文件,而较低级别的对象则不具有映射配置文件.其中有些可能有或没有等等

猜你在找的C#相关文章