将其他数据发送到Automapper

时间:2015-10-27 07:48:33

标签: c# automapper

我想向Automapper发送一些其他信息,以便我可以在CreateMap中使用它们。我似乎必须使用MappingOperatingOptionItems

所以我的电话是这样的:

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的文档很少,我没有提出任何建议,欢迎任何指导。

1 个答案:

答案 0 :(得分:1)

使用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读取任何数据,并根据需要使用它。