Esempio n. 1
0
 protected virtual ValueConverter CreateConverter(Type sourceType, Type targetType)
 {
     if (HasOption(MemberMapOptions.Hierarchy))
     {
         ValueConverter converter;
         if (EnumerableValueConverter.TryCreate(sourceType, targetType, _container, out converter))
         {
             return(converter);
         }
     }
     return(null);
 }
Esempio n. 2
0
        public static bool TryCreate(Type sourceType, Type targetType, MappingContainer container, out ValueConverter converter)
        {
            converter = null;
            Type sourceElementType, targetElementType;

            if (sourceType.IsEnumerable(out sourceElementType) && targetType.IsEnumerable(out targetElementType))
            {
                converter = new EnumerableValueConverter(container, sourceElementType, targetElementType);
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        internal Func <TSource, TTarget> GetMapFunc <TSource, TTarget>()
        {
            Compile();
            var converter = Converters.Get <TSource, TTarget>();

            if (converter != null)
            {
                return((Func <TSource, TTarget>)converter.CreateDelegate(typeof(TSource), typeof(TTarget), _moduleBuilder));
            }
            if (EnumerableValueConverter.TryCreate(typeof(TSource), typeof(TTarget), this, out converter))
            {
                converter.Compile(_moduleBuilder);
                return((Func <TSource, TTarget>)converter.CreateDelegate(typeof(TSource), typeof(TTarget), _moduleBuilder));
            }
            var typeMapper = TypeMapper <TSource, TTarget> .GetInstance(this);

            typeMapper.SetReadOnly();
            typeMapper.Compile(_moduleBuilder);
            return(typeMapper.CreateConverter(_moduleBuilder));
        }