如何使用Mapster

问题描述:

映射继承类,我想用下面的语句两个类之间的映射:如何使用Mapster

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>(); 

什么我需要做的,这样它处理派生类中的人的映射清单?

TeacherVM < => TeacherDM和StudentVM < => StudentDM

数据模型:

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; 
} 

视图模型:

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; 
} 

我不知道这是否也要做每次......或者只是一次......但这里是如何组织这个模型的“配置”。

  TypeAdapterConfig<PersonDM, PersonVM>.NewConfig() 
       .Include<TeacherDM, TeacherVM>() 
       .Include<StudentDM, StudenVM>(); 

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

  TypeAdapterConfig<PersonVM, PersonDM>.NewConfig() 
       .Include<TeacherVM, TeacherDM>() 
       .Include<StudentVM, StudenDM>(); 

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