【发布时间】:2016-06-23 09:45:44
【问题描述】:
我有用于初始化映射器配置文件的单例 EntityMapper 类。
private readonly IMapper _mapper;
private static EntityMapper _instance;
public static EntityMapper Instance => _instance ?? (_instance = new EntityMapper());
private EntityMapper()
{
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new ViewColumnMapperProfile());
});
_mapper = config.CreateMapper();
}
在基本 Profile 类中:
public class BaseMapperProfile<TSorce, TTarget> : Profile
{
protected override void Configure()
{
CreateMap<List<TSorce>, IdentityList>()
.ForCtorParam("identities", opt => opt.MapFrom(src => Mapper.Map<Identity>(src)));
CreateMap<IdentityList, List<TSorce>>()
.ConstructUsing(scr => new List<TSorce>(scr.Select(Mapper.Map<TSorce>)));
}
}
还有子类:
public class ViewColumnMapperProfile : BaseMapperProfile<AP_ViewColumn, ColumnInfo>
{
protected override void Configure()
{
CreateMap<AP_ViewColumn, ColumnInfo>()
.ForMember(...)
CreateMap<ColumnInfo, AP_ViewColumn>()
.ForMember(...)
CreateMap<AP_ViewColumn, Identity>()
.ForMember(...)
CreateMap<Identity, AP_ViewColumn>()
.ForMember(...);
base.Configure();
}
}
然后我使用映射:
var res = EntityMapper.Map<List<AP_ViewColumn>>(identityList);
并且这段代码抛出异常:Missing type mao configuration or unsupported mappig。
映射类型: 身份 -> AP_ViewColumn
但是当我使用时:
Mapper.Initialize(cfg => cfg.AddProfile(new ViewColumnMapperProfile()));
var res = EntityMapper.Map<List<AP_ViewColumn>>(identityList);
没关系
【问题讨论】:
标签: automapper