예제 #1
0
        private static Expression GetRuntimeTypeCheck(UnaryExpression cast, IMemberMapperData mapperData)
        {
            var mappingDataParameter = typeof(IMappingData).GetOrCreateParameter();
            var getSourceCall        = mapperData.GetSourceAccess(mappingDataParameter, mapperData.SourceType);
            var rootedValue          = cast.Operand.Replace(mapperData.SourceObject, getSourceCall);
            var memberHasRuntimeType = Expression.TypeIs(rootedValue, cast.Type);

            return(memberHasRuntimeType);
        }