C# 在FormMember()中声明变量
我想声明2个变量,以便转换此代码:C# 在FormMember()中声明变量,c#,automapper,C#,Automapper,我想声明2个变量,以便转换此代码: Mapper.CreateMap<SourceClass, DestinationClass>().ForMember( destination => destination.destinationValue, source => source.Condition(resolutionContext => (resolutionContext.InstanceCache.First(
Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(
destination => destination.destinationValue, source =>
source.Condition(resolutionContext =>
(resolutionContext.InstanceCache.First().Value as DestinationClass).destinationValue2 != null && (resolutionContext.InstanceCache.First().Value as DestinationClass).destinationValue2.Value != ((SourceClass)resolutionContext.Parent.sourceValue).sourceValue2
||
(resolutionContext.InstanceCache.First().Value as DestinationClass).destinationValue3 != null && (resolutionContext.InstanceCache.First().Value as DestinationClass).destinationValue3.Value != ((SourceClass)resolutionContext.Parent.sourceValue).sourceValue3
));
Mapper.CreateMap().FormMember(
destination=>destination.destinationValue,source=>
source.Condition(resolutionContext=>
(resolutionContext.InstanceCache.First().Value作为DestinationClass)。destinationValue2!=null&&(resolutionContext.InstanceCache.First().Value作为DestinationClass)。destinationValue2.Value!=((SourceClass)resolutionContext.Parent.sourceValue)。sourceValue2
||
(resolutionContext.InstanceCache.First().Value作为DestinationClass)。destinationValue3!=null&&(resolutionContext.InstanceCache.First().Value作为DestinationClass)。destinationValue3.Value!=((SourceClass)resolutionContext.Parent.sourceValue)。sourceValue3
));
为此:
Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(
var sourceObject = ((SourceClass)resolutionContext.Parent.sourceValue);
var destinationObject = (resolutionContext.InstanceCache.First().Value as DestinationClass);
destination => destination.destinationValue, source =>
source.Condition(resolutionContext =>
destinationObject.destinationValue2 != null && destinationObject.destinationValue2.Value != sourceObject.sourceValue2
||
destinationObject.destinationValue3 != null && destinationObject.destinationValue3.Value != sourceObject.sourceValue3
));
Mapper.CreateMap().FormMember(
var sourceObject=((SourceClass)resolutionContext.Parent.sourceValue);
变量destinationObject=(resolutionContext.InstanceCache.First().Value作为DestinationClass);
destination=>destination.destinationValue,source=>
source.Condition(resolutionContext=>
destinationObject.destinationValue2!=null&&destinationObject.destinationValue2.Value!=sourceObject.sourceValue2
||
destinationObject.destinationValue3!=null&&destinationObject.destinationValue3.Value!=sourceObject.sourceValue3
));
我怎么能做到这一点呢?我认为这是一种反模式,因为映射程序应该是愚蠢的,因此您可能希望抵制在它们内部加入太多逻辑的诱惑。查询缓存是域实现的责任
也许您应该丰富映射的域对象,而不是在映射过程中尝试添加缺少的验证和信息。downvoter,至少有勇气告诉我我的问题出了什么问题。是的。但我更感兴趣的是如何在方法调用中声明变量。