2017-08-26 89 views
0

映射繼承類,我想用下面的語句兩個類之間的映射:如何使用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; 
} 

回答

0

我不知道這是否也要做每次......或者只是一次......但這裏是如何組織這個模型的「配置」。

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