谁能帮我避免这种情况,
CreateMap<Obj, ObjDTO>()
.ForMember(d => d.Prop1, opt => opt.MapFrom(src => SomeMethod(src) == null ? null : SomeMethod(src).Prop1))
.ForMember(d => d.Prop2, opt => opt.MapFrom(src => SomeMethod(src) == null? null : SomeMethod(src).Prop2));
此处 SomeMethod
需要为 2 个简单属性调用近 4 次。它甚至不支持安全导航运算符。
请分享您是如何摆脱这种情况的。
最佳答案
听起来您可以使用 AfterMap
操作:
CreateMap<Obj, ObjDTO>()
.ForMember(...)
.AfterMap((src, dest) =>
{
var foo = SomeMethod(src);
if (foo == null)
{
return;
}
dest.Prop1 = foo.Prop1;
dest.Prop2 = foo.Prop2;
});
但是需要这样做可能是因为您想在映射代码中做太多事情。最终,src
应该已经准备好进行映射,其 Prop1
和 Prop2
属性存在并已分配。
或者您可以在 SomeMethod()
中使用内存,即对于每个输入您都记住输出,并在重复调用时返回后者。
关于c# - 避免对单独的成员 Automapper 重复 coSTLy 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872555/