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); }
/// <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); }
/// <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); }
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); }
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); }