1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using AutoMapper;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- namespace WebMainFrameForEap.ModelMappings
- {
- public class ModelMappingProfile : Profile
- {
- public ModelMappingProfile()
- {
- var sourceAndDestTypes = GetSourceAndDestTuples();
- foreach (var sourceAndDestType in sourceAndDestTypes)
- {
- CreateMap(sourceAndDestType.SourceType, sourceAndDestType.DestType);
- CreateMap(sourceAndDestType.DestType, sourceAndDestType.SourceType);
- }
- }
- private IEnumerable<SourceAndDestType> GetSourceAndDestTuples()
- {
- var modelAssembly = typeof(AutoMapAttribute).Assembly;
- var sourceTypes = modelAssembly.GetExportedTypes()
- .Where(t => t.GetCustomAttributes<AutoMapAttribute>().Any());
- return sourceTypes.SelectMany(sourceType =>
- {
- var destTypeAttributes = sourceType.GetCustomAttributes<AutoMapAttribute>();
- return destTypeAttributes.Select(destTypeAttribute =>
- new SourceAndDestType
- {
- SourceType = sourceType,
- DestType = destTypeAttribute.SourceType
- });
- }).ToList();
- }
- }
- public class SourceAndDestType
- {
- public Type SourceType { get; set; }
- public Type DestType { get; set; }
- }
- }
|