Пример #1
0
        public virtual CsvPropertyMap PropertyMap <T>(Expression <Func <T, object> > expression)
        {
            var property       = ReflectionHelper.GetProperty(expression);
            var csvPropertyMap = PropertyMaps.SingleOrDefault(m =>
            {
                if (m.Data.Property == property)
                {
                    return(true);
                }
                if (m.Data.Property.Name != property.Name)
                {
                    return(false);
                }
                if (m.Data.Property.DeclaringType.IsAssignableFrom(property.DeclaringType))
                {
                    return(true);
                }
                return(property.DeclaringType.IsAssignableFrom(m.Data.Property.DeclaringType));
            });

            if (csvPropertyMap != null)
            {
                return(csvPropertyMap);
            }
            var maxIndex = new CsvPropertyMap(property);

            maxIndex.Data.Index = GetMaxIndex() + 1;
            PropertyMaps.Add(maxIndex);
            return(maxIndex);
        }
Пример #2
0
        /// <summary>
        /// Maps a property to a Excel field.
        /// </summary>
        /// <param name="property">Property to map</param>
        /// <returns>The property mapping.</returns>
        private ExcelPropertyMap Map(
            PropertyInfo property)
        {
            var existingMap = PropertyMaps.SingleOrDefault(m => m.Data.Property == property);

            if (existingMap != null)
            {
                return(existingMap);
            }

            var propertyMap = new ExcelPropertyMap(property);

            propertyMap.Data.Index = GetMaxIndex() + 1;
            PropertyMaps.Add(propertyMap);

            return(propertyMap);
        }
Пример #3
0
        /// <summary>
        /// Maps a property to a CSV field.
        /// </summary>
        /// <param name="expression">The property to map.</param>
        /// <returns>The property mapping.</returns>
        protected virtual CsvPropertyMap Map(Expression <Func <T, object> > expression)
        {
            var property = ReflectionHelper.GetProperty(expression);

            var existingMap = PropertyMaps.SingleOrDefault(m => m.Data.Property == property);

            if (existingMap != null)
            {
                return(existingMap);
            }

            var propertyMap = new CsvPropertyMap(property);

            propertyMap.Data.Index = GetMaxIndex() + 1;
            PropertyMaps.Add(propertyMap);

            return(propertyMap);
        }
Пример #4
0
        public virtual CsvPropertyMap PropertyMap <T>(Expression <Func <T, object> > expression)
        {
            var property    = ReflectionHelper.GetProperty(expression);
            var existingMap = PropertyMaps.SingleOrDefault(m =>
                                                           m.Data.Property == property ||
                                                           m.Data.Property.Name == property.Name &&
                                                           (m.Data.Property.DeclaringType.IsAssignableFrom(property.DeclaringType) || property.DeclaringType.IsAssignableFrom(m.Data.Property.DeclaringType)));

            if (existingMap != null)
            {
                return(existingMap);
            }

            var propertyMap = new CsvPropertyMap(property);

            propertyMap.Data.Index = GetMaxIndex() + 1;
            PropertyMaps.Add(propertyMap);

            return(propertyMap);
        }
Пример #5
0
        private void ApplyInheritedTypeMap(TypeMap inheritedTypeMap)
        {
            foreach (var inheritedMappedProperty in inheritedTypeMap.PropertyMaps.Where(m => m.IsMapped))
            {
                var conventionPropertyMap = PropertyMaps
                                            .SingleOrDefault(m =>
                                                             m.DestinationName == inheritedMappedProperty.DestinationName);

                if (conventionPropertyMap != null)
                {
                    conventionPropertyMap.ApplyInheritedPropertyMap(inheritedMappedProperty);
                }
                else
                {
                    var propertyMap = new PropertyMap(inheritedMappedProperty, this);

                    _inheritedMaps.Add(propertyMap);
                }
            }

            //Include BeforeMap
            foreach (var beforeMapAction in inheritedTypeMap._beforeMapActions)
            {
                AddBeforeMapAction(beforeMapAction);
            }
            //Include AfterMap
            foreach (var afterMapAction in inheritedTypeMap._afterMapActions)
            {
                AddAfterMapAction(afterMapAction);
            }
            var notOverridenSourceConfigs =
                inheritedTypeMap._sourceMemberConfigs.Where(
                    baseConfig => _sourceMemberConfigs.All(derivedConfig => derivedConfig.SourceMember != baseConfig.SourceMember));

            _sourceMemberConfigs.AddRange(notOverridenSourceConfigs);
            var notOverridenPathMaps =
                inheritedTypeMap.PathMaps.Where(
                    baseConfig => PathMaps.All(derivedConfig => derivedConfig.MemberPath != baseConfig.MemberPath));

            _pathMaps.AddRange(notOverridenPathMaps);
        }