예제 #1
0
파일: TypeMap.cs 프로젝트: amigin/Lykee
        public ArrayTypeMap(Type srcType, Type destType, Type attrDest)
        {
            var srcElement = ReflectionUtils.GetElementType(srcType);
            var destElement = ReflectionUtils.GetElementType(destType);

            _arrayItemMap = Create(srcElement, destElement, attrDest);
            _destArrayConstructor = ArrayConstructorBase.Create(destType);
        }
예제 #2
0
파일: PropertyMap.cs 프로젝트: amigin/Lykee
 public ClassPropertyMap(PropertyInfo srcPropertyInfo, PropertyInfo destPropertyInfo, Type attrType)
 {
     _srcPropertyInfo = srcPropertyInfo;
     _destPropertyInfo = destPropertyInfo;
     _typeMap = TypeMap.Create(srcPropertyInfo.PropertyType, destPropertyInfo.PropertyType, attrType);
 }
예제 #3
0
파일: PropertyMap.cs 프로젝트: amigin/Lykee
        public ArrayPropertyMap(PropertyInfo srcPropertyInfo, PropertyInfo destPropertyInfo, Type attrType)
        {

            _srcPropertyInfo = srcPropertyInfo;
            _destPropertyInfo = destPropertyInfo;


            var srcElementType = ReflectionUtils.GetElementType(srcPropertyInfo.PropertyType);
            var destElementType = ReflectionUtils.GetElementType(destPropertyInfo.PropertyType);

            var isSimpleType = ReflectionUtils.IsSimpleType(srcElementType);
            var areInterfaces = IsInterfaces(srcElementType, destElementType);

            if (isSimpleType || areInterfaces)
            {
                // если тип простой, просто проверим чтобы они были одинаковые - иначе ничего может не получиться в рантайме
                if (!areInterfaces && srcElementType != destElementType)
                    throw new Exception("There are different simple element types for mapping Lists. ElementSrc=[" + srcElementType + "]. ElementDest=[" + destElementType + "]. Theyshould be the same");
            }
            else
            {
                _elementTypeMap = TypeMap.Create(srcElementType, destElementType,attrType);
            }

            _destArrayConstructor = ArrayConstructorBase.Create(destPropertyInfo.PropertyType);
        }
예제 #4
0
 public ClassPropertyMap(PropertyInfo srcPropertyInfo, PropertyInfo destPropertyInfo, Type attrType)
 {
     _srcPropertyInfo  = srcPropertyInfo;
     _destPropertyInfo = destPropertyInfo;
     _typeMap          = TypeMap.Create(srcPropertyInfo.PropertyType, destPropertyInfo.PropertyType, attrType);
 }