public Expression GetBody(
     IMemberMapperData mapperData,
     CallbackPosition?position    = null,
     QualifiedMember targetMember = null)
 {
     return(position.IsPriorToObjectCreation(targetMember)
         ? _parametersSwapper.Swap(_lambda, mapperData, ParametersSwapper.UseTargetMember)
         : _parametersSwapper.Swap(_lambda, mapperData, ParametersSwapper.UseInstanceVariable));
 }
Beispiel #2
0
        public Expression GetBody(
            IMemberMapperData mapperData,
            CallbackPosition?position    = null,
            QualifiedMember targetMember = null)
        {
            var contextTypes = _contextTypes;

            if (_isForTargetDictionary &&
                (mapperData.TargetMember is DictionaryTargetMember dictionaryMember) &&
                (dictionaryMember.HasCompatibleType(contextTypes[1])))
            {
                contextTypes    = contextTypes.CopyToArray();
                contextTypes[1] = mapperData.TargetType;
            }

            return(position.IsPriorToObjectCreation(targetMember)
                ? _parametersSwapper.Swap(_lambda, contextTypes, mapperData, ParametersSwapper.UseTargetMember)
                : _parametersSwapper.Swap(_lambda, contextTypes, mapperData, ParametersSwapper.UseTargetInstance));
        }