在 AfterMap 中不使用 Automapper 的全局 Mapper 变量
Use no global Mapper variable of Automapper in AfterMap
有没有办法在使用AfterMap时获取AutoMapper中当前的映射上下文?
public class DefaultMappingProfile : Profile
{
protected override void Configure()
{
this.CreateMap<SomeList, List<SpecialItem>>()
.AfterMap((src, dst) => dst.AddRange(
src.elem.Select(Mapper.Map<SpecialItem>)));
我尝试使用 .ConstructUsing(context => {})
但这给了我与使用 AfterMap 时不同的结果(!?)。但是我不想在这里访问全局变量Mapper
。有没有办法绕过这里访问全局变量?
您可以使用 ConvertUsing<TSource, TDestination>
作为替代方法,例如:
CreateMap<data.BillCycle, domain.BillCycle>().ConvertUsing<BillCycleConverter>();
class 将实现 ITypeConverter<TSource, TDestination>
并允许您访问映射器:
public class BillCycleConverter : ITypeConverter<data.BillCycle, domain.BillCycle>
{
public domain.BillCycle Convert(ResolutionContext context)
{
context.Engine.Map<X, Y>...
}
}
有没有办法在使用AfterMap时获取AutoMapper中当前的映射上下文?
public class DefaultMappingProfile : Profile
{
protected override void Configure()
{
this.CreateMap<SomeList, List<SpecialItem>>()
.AfterMap((src, dst) => dst.AddRange(
src.elem.Select(Mapper.Map<SpecialItem>)));
我尝试使用 .ConstructUsing(context => {})
但这给了我与使用 AfterMap 时不同的结果(!?)。但是我不想在这里访问全局变量Mapper
。有没有办法绕过这里访问全局变量?
您可以使用 ConvertUsing<TSource, TDestination>
作为替代方法,例如:
CreateMap<data.BillCycle, domain.BillCycle>().ConvertUsing<BillCycleConverter>();
class 将实现 ITypeConverter<TSource, TDestination>
并允许您访问映射器:
public class BillCycleConverter : ITypeConverter<data.BillCycle, domain.BillCycle>
{
public domain.BillCycle Convert(ResolutionContext context)
{
context.Engine.Map<X, Y>...
}
}