首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Mapster映射继承类

如何使用Mapster映射继承类
EN

Stack Overflow用户
提问于 2017-08-26 10:39:18
回答 1查看 1.4K关注 0票数 1

我想使用以下语句在两个类之间进行映射:

代码语言:javascript
复制
var directoryDataModel = new DirectoryDM()
{
    Title = "School Directory",
    Persons = new List<PersonDM>()
    {
        new TeacherDM() { Name = "Johnson", Department = "Math" },
        new StudentDM() { Name = "Billy", Classes = new List<string>() { "Math", "Physics" } }
    }                
};
var directoryViewModel = directoryDataModel.Adapt<DirectoryVM>();
var directoryDataModel2 = directoryViewModel.Adapt<DirectoryDM>();

我需要做什么才能让它处理Person列表中派生类的映射?

TeacherVM <=> TeacherDM和StudentVM <=> StudentDM

数据模型:

代码语言:javascript
复制
public class DirectoryDM
{
    public string Title;
    public List<PersonDM> Persons;
}
public class PersonDM
{
    public string Name;
}
public class TeacherDM : PersonDM
{
    public string Department;
}
public class StudentDM : PersonDM
{
    public List<string> Classes;
}

查看模型:

代码语言:javascript
复制
public class DirectoryVM
{
    public string Title;
    public List<PersonVM> Persons;
    public bool AdditionalStuff;
}
public class PersonVM
{
    public string Name;
    public bool AdditionalStuff;
}
public class TeacherVM : PersonVM
{
    public string Department;
    public bool AdditionalStuff2;
}
public class StudentVM : PersonVM
{
    public List<string> Classes;
    public bool AdditionalStuff2;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-28 07:44:22

我不确定是否每次都要这样做。或者就一次..。但这里是如何组织此模型的“配置”。

代码语言:javascript
复制
            TypeAdapterConfig<PersonDM, PersonVM>.NewConfig()
                .Include<TeacherDM, TeacherVM>()
                .Include<StudentDM, StudenVM>();

            var viewModel = dataModel.Adapt<FlexSortVM>();

代码语言:javascript
复制
            TypeAdapterConfig<PersonVM, PersonDM>.NewConfig()
                .Include<TeacherVM, TeacherDM>()
                .Include<StudentVM, StudenDM>();

            var dataModel = viewModel.Adapt<FlexSortDM>();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45891436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档