【发布时间】:2021-09-17 13:59:20
【问题描述】:
我有一个问题,我正在尝试使用 AutoMapper 将来自数据库(为了清楚起见是 MongoDB,但我认为这无关紧要)的动态对象映射到特定类。
类继承信息存储在属性_t中(由Mongo在序列化时完成)-在创建包含继承的基础对象时,如何指示AutoMapper使用_t中的类信息?
这是我的班级信息
class Person
{
public string id { get; set; }
public Foo Foo { get; set; }
}
class Foo
{
public string name { get; set; }
public string _t { get; set; }
}
class Bar : Foo
{
public string size { get; set; }
}
我传入的动态对象如下所示:
Person.id = "Bob"
Person.Foo.name = "Bob"
Person.Foo._t = "Bar"
Person.Foo.size = "123"
当我使用 automapper 使用此代码将其映射到 Person 时
var configuration = new MapperConfiguration(cfg => {});
var mapper = configuration.CreateMapper();
Person Person = mapper.Map<Person>(MyDynamic);
生成的 Person.Foo 不是 Bar 类型。我完全理解(为什么)会出现这种情况,因为 AutoMapper 不了解原始类是什么。但是考虑到类的信息存储在 _t 中,我可以指示 AutoMapper 使用它来确保 Person.Foo 是 Bar 类型吗?
【问题讨论】:
标签: c# dynamic automapper expandoobject