项目
版本

AutoMapper 动态对象和 ExpandoObject 映射

AutoMapper 能够在没有任何显式配置的情况下,将对象映射到动态对象或从动态对象映射:

public class Foo {
    public int Bar { get; set; }
    public int Baz { get; set; }
    public Foo InnerFoo { get; set; }
}
dynamic foo = new MyDynamicObject();
foo.Bar = 5;
foo.Baz = 6;

var configuration = new MapperConfiguration(cfg => {});

var result = mapper.Map<Foo>(foo);
result.Bar.ShouldBeEquivalentTo(5);
result.Baz.ShouldBeEquivalentTo(6);

dynamic foo2 = mapper.Map<MyDynamicObject>(result);
foo2.Bar.ShouldBeEquivalentTo(5);
foo2.Baz.ShouldBeEquivalentTo(6);

同样,你可以直接从 Dictionary<string, object> 映射到对象,AutoMapper 会根据键与属性名进行匹配。对于映射到目标子对象,你可以使用点表示法。

var result = mapper.Map<Foo>(new Dictionary<string, object> { ["InnerFoo.Bar"] = 42 });
result.InnerFoo.Bar.ShouldBeEquivalentTo(42);
在本文档中