Mapster-映射基类的后代类

问题描述

课程:

public class Department
{
    public string Name { get; set; }
}

public class DepartmentA : Department
{
    public string NameA { get; set; }
}

public class Employee
{
    public string Name { get; set; }
    public int Salary { get; set; }
    public string Address { get; set; }
    public Department Department { get; set; }
}

public class EmployeeDTO
{
    public string Name { get; set; }
    public int Salary { get; set; }
    public string Address { get; set; }
    public Department Department { get; set; }
}

代码:

DepartmentA departmentA = new DepartmentA { NameA = "depA",Name = "dep" };

Employee emp = new Employee
{
        Name = "James",Salary = 20000,Address = "London",Department = departmentA
};
        
//Mapster
var empDTO = emp.Adapt<EmployeeDTO>();

//AutoMapper
//var config = new MapperConfiguration(cfg => cfg.CreateMap<Employee,EmployeeDTO>());

//var mapper = config.CreateMapper();
//EmployeeDTO empDTO = mapper.Map<EmployeeDTO>(emp);

Console.WriteLine("SourceType:" + emp.Department.GetType().Name);

Console.WriteLine("DestType:" + empDTO.Department.GetType().Name);

如果运行代码,您将看到SourceType和DestType不相同。我如何实现它们相同? Mapster将部门划分为部门类(祖先)而不是部门A类(后代)。

在此示例中,我知道emp.Department中有后代,但在我的应用程序中我不知道。因此,此问题的解决方案必须是通用的。

我试图在AutoMapper中解决此问题。得到了相同的结果。如下面的@Prolog所述,在AutoMapper中工作。我更新了主代码。

如果有人解决了Mapster中的问题,我仍然很感兴趣。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)