向 Automapper 发送附加数据
Sending additional data to Automapper
我想向 Automapper 发送一些附加信息,以便我可以在 CreateMap
中使用它们。看来我必须使用 MappingOperatingOption
和 Items
.
所以我的电话是这样的:
var obj = Mapper.Map<class>(x, o => o.Items.Add("data", 23));
问题是我无法在 MapFrom
.
中访问该值
Mapper.CreateMap<ClassA, ClassB>()
.ForMember(x => x.FieldA, o => o.MapFrom(d =>
//accessing item here))
关于 Automapper 的文档很少,我什么也没想到,欢迎任何指导。
像这样使用 ResolveUsing
而不是 MapFrom
:
Mapper.CreateMap<ClassA, ClassB>()
.ForMember(dst => dst.FieldA,
opt =>
opt.ResolveUsing((resolution_result, src) =>
(int)resolution_result.Context.Options.Items["data"] + src.FieldB));
我在这里使用 (int)resolution_result.Context.Options.Items["data"] + src.FieldB
作为示例。您可以从 resolution_result.Context.Options.Items
中读取任何一条数据并随意使用它。
我想向 Automapper 发送一些附加信息,以便我可以在 CreateMap
中使用它们。看来我必须使用 MappingOperatingOption
和 Items
.
所以我的电话是这样的:
var obj = Mapper.Map<class>(x, o => o.Items.Add("data", 23));
问题是我无法在 MapFrom
.
Mapper.CreateMap<ClassA, ClassB>()
.ForMember(x => x.FieldA, o => o.MapFrom(d =>
//accessing item here))
关于 Automapper 的文档很少,我什么也没想到,欢迎任何指导。
像这样使用 ResolveUsing
而不是 MapFrom
:
Mapper.CreateMap<ClassA, ClassB>()
.ForMember(dst => dst.FieldA,
opt =>
opt.ResolveUsing((resolution_result, src) =>
(int)resolution_result.Context.Options.Items["data"] + src.FieldB));
我在这里使用 (int)resolution_result.Context.Options.Items["data"] + src.FieldB
作为示例。您可以从 resolution_result.Context.Options.Items
中读取任何一条数据并随意使用它。