C# 在FormMember()中声明变量

C# 在FormMember()中声明变量,c#,automapper,C#,Automapper,我想声明2个变量,以便转换此代码: Mapper.CreateMap<SourceClass, DestinationClass>().ForMember( destination => destination.destinationValue, source => source.Condition(resolutionContext => (resolutionContext.InstanceCache.First(

我想声明2个变量,以便转换此代码:

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,至少有勇气告诉我我的问题出了什么问题。是的。但我更感兴趣的是如何在方法调用中声明变量。