public TypeMap CreateClosedGenericTypeMap(ITypeMapConfiguration openMapConfig, TypePair closedTypes, IConfigurationProvider configurationProvider) { var closedMap = _typeMapFactory.CreateTypeMap(closedTypes.SourceType, closedTypes.DestinationType, this); closedMap.IsClosedGeneric = true; openMapConfig.Configure(closedMap); Configure(closedMap, configurationProvider); if (closedMap.TypeConverterType != null) { var typeParams = (openMapConfig.SourceType.IsGenericTypeDefinition() ? closedTypes.SourceType.GetGenericArguments() : Type.EmptyTypes) .Concat (openMapConfig.DestinationType.IsGenericTypeDefinition() ? closedTypes.DestinationType.GetGenericArguments() : Type.EmptyTypes); var neededParameters = closedMap.TypeConverterType.GetGenericParameters().Length; closedMap.TypeConverterType = closedMap.TypeConverterType.MakeGenericType(typeParams.Take(neededParameters).ToArray()); } if (closedMap.DestinationTypeOverride?.IsGenericTypeDefinition() == true) { var neededParameters = closedMap.DestinationTypeOverride.GetGenericParameters().Length; closedMap.DestinationTypeOverride = closedMap.DestinationTypeOverride.MakeGenericType(closedTypes.DestinationType.GetGenericArguments().Take(neededParameters).ToArray()); } return(closedMap); }
public TypeMap CreateClosedGenericTypeMap(ITypeMapConfiguration openMapConfig, TypeMapRegistry typeMapRegistry, TypePair closedTypes) { var closedMap = _typeMapFactory.CreateTypeMap(closedTypes.SourceType, closedTypes.DestinationType, this, openMapConfig.MemberList); openMapConfig.Configure(closedMap); Configure(typeMapRegistry, closedMap); if (closedMap.TypeConverterType != null) { var typeParams = (openMapConfig.SourceType.IsGenericTypeDefinition() ? closedTypes.SourceType.GetGenericArguments() : new Type[0]) .Concat (openMapConfig.DestinationType.IsGenericTypeDefinition() ? closedTypes.DestinationType.GetGenericArguments() : new Type[0]); var neededParameters = closedMap.TypeConverterType.GetGenericParameters().Length; closedMap.TypeConverterType = closedMap.TypeConverterType.MakeGenericType(typeParams.Take(neededParameters).ToArray()); } if (closedMap.DestinationTypeOverride?.IsGenericTypeDefinition() == true) { var neededParameters = closedMap.DestinationTypeOverride.GetGenericParameters().Length; closedMap.DestinationTypeOverride = closedMap.DestinationTypeOverride.MakeGenericType(closedTypes.DestinationType.GetGenericArguments().Take(neededParameters).ToArray()); } return(closedMap); }
private void BuildTypeMap(TypeMapRegistry typeMapRegistry, ITypeMapConfiguration config) { var typeMap = _typeMapFactory.CreateTypeMap(config.SourceType, config.DestinationType, this, config.MemberList); config.Configure(this, typeMap); typeMapRegistry.RegisterTypeMap(typeMap); }
private void BuildTypeMap(IConfigurationProvider configurationProvider, ITypeMapConfiguration config) { var typeMap = _typeMapFactory.CreateTypeMap(config.SourceType, config.DestinationType, this); config.Configure(typeMap); configurationProvider.RegisterTypeMap(typeMap); }
public TypeMap CreateInlineMap(TypeMapRegistry typeMapRegistry, ITypeMapConfiguration inlineConfig) { var typeMap = _typeMapFactory.CreateTypeMap(inlineConfig.SourceType, inlineConfig.DestinationType, this, inlineConfig.MemberList); typeMap.IsConventionMap = true; inlineConfig.Configure(typeMap); Configure(typeMapRegistry, typeMap); return(typeMap); }
public TypeMap ResolveTypeMap(TypePair typePair, ITypeMapConfiguration inlineConfiguration) { var typeMap = _typeMapPlanCache.GetOrAdd(typePair); // if it's a dynamically created type map, we need to seal it outside GetTypeMap to handle recursion if (typeMap != null && typeMap.MapExpression == null && _typeMapRegistry.GetTypeMap(typePair) == null) { lock (typeMap) { inlineConfiguration.Configure(typeMap); typeMap.Seal(this); } } return(typeMap); }
private void BuildTypeMap(TypeMapRegistry typeMapRegistry, ITypeMapConfiguration config) { var typeMap = _typeMapFactory.CreateTypeMap(config.SourceType, config.DestinationType, this, config.MemberList); config.Configure(typeMap); typeMapRegistry.RegisterTypeMap(typeMap); }