private void Seal() { var derivedMaps = new List <Tuple <TypePair, TypeMap> >(); var redirectedTypes = new List <Tuple <TypePair, TypePair> >(); foreach (var profile in _profiles.Cast <IProfileConfiguration>()) { profile.Register(_typeMapRegistry); } foreach (var action in _allTypeMapActions) { foreach (var typeMap in _typeMapRegistry.TypeMaps) { var expression = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); action(typeMap, expression); expression.Configure(typeMap.Profile, typeMap); } } foreach (var profile in _profiles.Cast <IProfileConfiguration>()) { profile.Configure(_typeMapRegistry); } foreach (var typeMap in _typeMapRegistry.TypeMaps) { _typeMapPlanCache[typeMap.Types] = typeMap; if (typeMap.DestinationTypeOverride != null) { redirectedTypes.Add(Tuple.Create(typeMap.Types, new TypePair(typeMap.SourceType, typeMap.DestinationTypeOverride))); } if (typeMap.SourceType.IsNullableType()) { var nonNullableTypes = new TypePair(Nullable.GetUnderlyingType(typeMap.SourceType), typeMap.DestinationType); redirectedTypes.Add(Tuple.Create(nonNullableTypes, typeMap.Types)); } derivedMaps.AddRange(GetDerivedTypeMaps(typeMap).Select(derivedMap => Tuple.Create(new TypePair(derivedMap.SourceType, typeMap.DestinationType), derivedMap))); } foreach (var redirectedType in redirectedTypes) { var derivedMap = FindTypeMapFor(redirectedType.Item2); if (derivedMap != null) { _typeMapPlanCache[redirectedType.Item1] = derivedMap; } } foreach (var derivedMap in derivedMaps.Where(derivedMap => !_typeMapPlanCache.ContainsKey(derivedMap.Item1))) { _typeMapPlanCache[derivedMap.Item1] = derivedMap.Item2; } foreach (var typeMap in _typeMapRegistry.TypeMaps) { typeMap.Seal(_typeMapRegistry, this); } }
private void Configure(TypeMapRegistry typeMapRegistry, TypeMap typeMap) { foreach (var action in AllTypeMapActions) { var expression = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); action(typeMap, expression); expression.Configure(typeMap); } foreach (var action in AllPropertyMapActions) { foreach (var propertyMap in typeMap.GetPropertyMaps()) { var memberExpression = new MappingExpression.MemberConfigurationExpression(propertyMap.DestinationProperty, typeMap.SourceType); action(propertyMap, memberExpression); memberExpression.Configure(typeMap); } } ApplyBaseMaps(typeMapRegistry, typeMap, typeMap); ApplyDerivedMaps(typeMapRegistry, typeMap, typeMap); }
private IMappingExpression <TSource, TDestination> CreateMappingExpression <TSource, TDestination>(TypeMap typeMap) { var mappingExp = new MappingExpression <TSource, TDestination>(typeMap, _serviceCtor, this); var type = (typeMap.ConfiguredMemberList == MemberList.Destination) ? typeof(TDestination) : typeof(TSource); return(Ignore(mappingExp, type)); }
private IMappingExpression CreateMappingExpression(TypeMap typeMap) { var profileExpression = GetProfile(typeMap.Profile); var mappingExp = new MappingExpression(typeMap, _serviceCtor, profileExpression); return((IMappingExpression)Ignore(mappingExp, typeMap.DestinationType)); }
public IMappingExpression CreateMap(Type sourceType, Type destinationType, MemberList memberList) { var map = new MappingExpression(new TypePair(sourceType, destinationType), memberList); _typeMapConfigs.Add(map); return(map); }
private IMappingExpression <TSource, TDestination> CreateMappingExpression <TSource, TDestination>(MemberList memberList) { var mappingExp = new MappingExpression <TSource, TDestination>(memberList); _typeMapConfigs.Add(mappingExp); return(mappingExp); }
public IMappingExpression <TSource, TDestination> ConfigureMap(MemberList memberList) { var typeMapConfiguration = new MappingExpression <TSource, TDestination>(memberList); InlineConfiguration = typeMapConfiguration; return(typeMapConfiguration); }
public TypeMap CreateConventionTypeMap(TypeMapRegistry typeMapRegistry, TypePair types) { var typeMap = _typeMapFactory.CreateTypeMap(types.SourceType, types.DestinationType, this, MemberList.Destination); var config = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); config.Configure(typeMap); Configure(typeMapRegistry, typeMap); return(typeMap); }
public IMappingExpression CreateMap(Type sourceType, Type destinationType, MemberList memberList) { var map = new MappingExpression(new TypePair(sourceType, destinationType), memberList); _typeMapConfigs.Add(map); if (sourceType.IsGenericTypeDefinition() || destinationType.IsGenericTypeDefinition()) { _openTypeMapConfigs.Add(map); } return(map); }
private void Configure(TypeMapRegistry typeMapRegistry, TypeMap typeMap) { foreach (var action in _allTypeMapActions) { var expression = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); action(typeMap, expression); expression.Configure(this, typeMap); } ApplyBaseMaps(typeMapRegistry, typeMap, typeMap); ApplyDerivedMaps(typeMapRegistry, typeMap, typeMap); }
public TypeMap CreateConventionTypeMap(TypePair types, IConfigurationProvider configurationProvider) { var typeMap = _typeMapFactory.CreateTypeMap(types.SourceType, types.DestinationType, this); typeMap.IsConventionMap = true; var config = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); config.Configure(typeMap); Configure(typeMap, configurationProvider); return(typeMap); }
TypeMap IProfileConfiguration.ConfigureConventionTypeMap(TypeMapRegistry typeMapRegistry, TypePair types) { if (!TypeConfigurations.Any(c => c.IsMatch(types))) { return(null); } var typeMap = _typeMapFactory.CreateTypeMap(types.SourceType, types.DestinationType, this, MemberList.Destination); var config = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); config.Configure(this, typeMap); Configure(typeMapRegistry, typeMap); return(typeMap); }
private IMappingExpression CreateMappingExpression(TypeMap typeMap, Type destinationType) { IMappingExpression mappingExp = new MappingExpression(typeMap, _serviceCtor); TypeInfo destInfo = new TypeInfo(destinationType); foreach (var destProperty in destInfo.GetPublicWriteAccessors()) { object[] attrs = destProperty.GetCustomAttributes(true); if (attrs.Any(x => x is IgnoreMapAttribute)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } } return(mappingExp); }
private IMappingExpression <TSource, TDestination> CreateMappingExpression <TSource, TDestination>(TypeMap typeMap) { IMappingExpression <TSource, TDestination> mappingExp = new MappingExpression <TSource, TDestination>(typeMap, _serviceCtor, this); // Custom Hack var destInfo = new TypeInfo(typeof(TDestination)); foreach (var destProperty in destInfo.GetPublicWriteAccessors()) { object[] attrs = destProperty.GetCustomAttributes(true); if (attrs.Any(x => x is IgnoreMapAttribute)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } } return(mappingExp); }
private IMappingExpression CreateMappingExpression(TypeMap typeMap, Type destinationType) { IMappingExpression mappingExp = new MappingExpression(typeMap, _serviceCtor); var destInfo = new TypeInfo(destinationType, ShouldMapProperty, ShouldMapField); foreach (var destProperty in destInfo.PublicWriteAccessors) { var attrs = destProperty.GetCustomAttributes(true); if (attrs.Any(x => x is IgnoreMapAttribute)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } if (_globalIgnore.Contains(destProperty.Name)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } } return(mappingExp); }
private IMappingExpression <TSource, TDestination> CreateMappingExpression <TSource, TDestination>(TypeMap typeMap) { IMappingExpression <TSource, TDestination> mappingExp = new MappingExpression <TSource, TDestination>(typeMap, _serviceCtor, this); var type = (typeMap.ConfiguredMemberList == MemberList.Destination) ? typeof(TDestination) : typeof(TSource); var destInfo = new TypeInfo(type, ShouldMapProperty, ShouldMapField); foreach (var destProperty in destInfo.PublicWriteAccessors) { var attrs = destProperty.GetCustomAttributes(true); if (attrs.Any(x => x is IgnoreMapAttribute)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } if (_globalIgnore.Contains(destProperty.Name)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } } return(mappingExp); }
private IMappingExpression <TSource, TDestination> CreateMappingExpression <TSource, TDestination>(TypeMap typeMap) { IMappingExpression <TSource, TDestination> mappingExp = new MappingExpression <TSource, TDestination>(typeMap, _serviceCtor, this); TypeInfo destInfo = typeMap.ConfiguredMemberList == MemberList.Destination ? new TypeInfo(typeof(TDestination), BindingFlags) : new TypeInfo(typeof(TSource), BindingFlags); foreach (var destProperty in destInfo.GetPublicWriteAccessors()) { object[] attrs = destProperty.GetCustomAttributes(true); if (attrs.Any(x => x is IgnoreMapAttribute)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } if (_globalIgnore.Contains(destProperty.Name)) { mappingExp = mappingExp.ForMember(destProperty.Name, y => y.Ignore()); } } return(mappingExp); }
private IMappingExpression CreateMappingExpression(TypeMap typeMap, Type destinationType) { var mappingExp = new MappingExpression(typeMap, _serviceCtor, this); return((IMappingExpression)Ignore(mappingExp, destinationType)); }
private void Seal(IConfiguration configuration) { ServiceCtor = configuration.ServiceCtor; AllowNullDestinationValues = configuration.AllowNullDestinationValues; AllowNullCollections = configuration.AllowNullCollections; EnableNullPropagationForQueryMapping = configuration.EnableNullPropagationForQueryMapping; var derivedMaps = new List <Tuple <TypePair, TypeMap> >(); var redirectedTypes = new List <Tuple <TypePair, TypePair> >(); foreach (var profile in configuration.Profiles.Cast <IProfileConfiguration>()) { profile.Register(_typeMapRegistry); } foreach (var action in configuration.AllTypeMapActions) { foreach (var typeMap in _typeMapRegistry.TypeMaps) { var expression = new MappingExpression(typeMap.Types, typeMap.ConfiguredMemberList); action(typeMap, expression); expression.Configure(typeMap.Profile, typeMap); } } foreach (var action in configuration.AllPropertyMapActions) { foreach (var typeMap in _typeMapRegistry.TypeMaps) { foreach (var propertyMap in typeMap.GetPropertyMaps()) { var memberExpression = new MappingExpression.MemberConfigurationExpression(propertyMap.DestinationProperty, typeMap.SourceType); action(propertyMap, memberExpression); memberExpression.Configure(typeMap); } } } foreach (var profile in configuration.Profiles.Cast <IProfileConfiguration>()) { profile.Configure(_typeMapRegistry); } foreach (var typeMap in _typeMapRegistry.TypeMaps) { _typeMapPlanCache[typeMap.Types] = typeMap; if (typeMap.DestinationTypeOverride != null) { redirectedTypes.Add(Tuple.Create(typeMap.Types, new TypePair(typeMap.SourceType, typeMap.DestinationTypeOverride))); } derivedMaps.AddRange(GetDerivedTypeMaps(typeMap).Select(derivedMap => Tuple.Create(new TypePair(derivedMap.SourceType, typeMap.DestinationType), derivedMap))); } foreach (var redirectedType in redirectedTypes) { var derivedMap = FindTypeMapFor(redirectedType.Item2); if (derivedMap != null) { _typeMapPlanCache[redirectedType.Item1] = derivedMap; } } foreach (var derivedMap in derivedMaps.Where(derivedMap => !_typeMapPlanCache.ContainsKey(derivedMap.Item1))) { _typeMapPlanCache[derivedMap.Item1] = derivedMap.Item2; } foreach (var typeMap in _typeMapRegistry.TypeMaps) { typeMap.Seal(_typeMapRegistry, this); } }