AutoMapper使用内置映射器

时间:2016-06-30 22:29:12

标签: c# automapper

从AutoMapper 4.2.1升级到5.0.0如果不提供配置,我就无法再这样做了:

$ perl -MO=Concise -e'keys main::'
Hash %main missing the % in argument 1 of keys() at -e line 1.
6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <1> keys[t2] vK/1 ->6
4        <1> rv2hv[t1] lKRM/1 ->5
3           <$> gv(*main) s ->4
-e syntax OK
$ perl -MO=Concise -e'keys ::'
Hash %:: missing the % in argument 1 of keys() at -e line 1.
6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <1> keys[t2] vK/1 ->6
4        <1> rv2hv[t1] lKRM/1 ->5
3           <$> gv(*main::) s ->4
-e syntax OK

以前,AutoMapper会自动计算出Dictionary键直接映射到属性名称而无需任何设置。

我尝试使用以下方式进行初始化:

var entity = Mapper.Map<Dictionary<string, object>, MyEntity>(feature.Attributes);

但是这导致我的实体中出现null属性,因为AutoMapper不再以这种方式自动连接它之前的内置Dictionary mapper。

我认为我需要使用类似Mapper.Initialize(cfg => { cfg.CreateMap<Dictionary<string, object>, MyEntity>(); cfg.CreateMap<Dictionary<string, object>, MyOtherEntity>(); }); 的内容,但我还没有设法找到内置的AutoMapper地图制作工具。

我确定这是一个非常简单的代码问题需要解决。有什么快速指针吗?甚至链接到我可能错过的相关文档?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用动态地图:

var dic = new Dictionary<string, string>();
dic.Add("foo", "bar");

var test = Mapper.DynamicMap<Dictionary<string, string>>(dic);