/// <summary> /// 执行对象映射构造 /// </summary> public void CreateMap() { List <(Type Source, Type Target)> tuples = new List <(Type Source, Type Target)>(); Type[] types = _mapFromAttributeTypeFinder.FindAll(true); foreach (Type targetType in types) { MapFromAttribute attribute = targetType.GetAttribute <MapFromAttribute>(); foreach (Type sourceType in attribute.SourceTypes) { var tuple = ValueTuple.Create(sourceType, targetType); tuples.AddIfNotExist(tuple); } } types = _mapToAttributeTypeFinder.FindAll(true); foreach (Type sourceType in types) { MapToAttribute attribute = sourceType.GetAttribute <MapToAttribute>(); foreach (Type targetType in attribute.TargetTypes) { var tuple = ValueTuple.Create(sourceType, targetType); tuples.AddIfNotExist(tuple); } } foreach ((Type Source, Type Target)tuple in tuples) { CreateMap(tuple.Source, tuple.Target); _logger.LogDebug($"创建“{tuple.Source}”到“{tuple.Target}”的对象映射关系"); } _logger.LogInformation($"创建{tuples.Count}个对象映射关系"); }
/// <inheritdoc /> public void CreateMap() { List <(Type Source, Type Target)> tuples = new List <(Type Source, Type Target)>(); Type[] types = _mapFromAttributeTypeFinder.FindAll(true); foreach (Type targetType in types) { MapFromAttribute attribute = targetType.GetAttribute <MapFromAttribute>(); foreach (Type sourceType in attribute.SourceTypes) { var tuple = ValueTuple.Create(sourceType, targetType); tuples.AddIfNotExist(tuple); } } types = _mapToAttributeTypeFinder.FindAll(true); foreach (Type sourceType in types) { MapToAttribute attribute = sourceType.GetAttribute <MapToAttribute>(); foreach (Type targetType in attribute.TargetTypes) { var tuple = ValueTuple.Create(sourceType, targetType); tuples.AddIfNotExist(tuple); } } foreach ((Type Source, Type Target)tuple in tuples) { CreateMap(tuple.Source, tuple.Target); } }