Sha*_*ean 2 asp.net-mvc automapper asp.net-mvc-3
我有一个基类:
public abstract class User
{
/* properties */
}
public class Teacher : User
{
}
public class Student : User
{
}
Run Code Online (Sandbox Code Playgroud)
然后我想将我的视图模型映射到基于属性的这些子类之一:
public enum UserType
{
Teacher,
Student
}
public class UserVM
{
/* Properties of User */
public UserType UserType {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
基于UserVM.UserType,我想映射到相关的子类:
userModel.UserType = UserType.Teacher;
//user will be of type Teacher
var user = Mapper.Map<UserVM, User>(userModel);
Run Code Online (Sandbox Code Playgroud)
如何CreateMap
为此设置配置?
您可以ConstructUsing
根据枚举值使用实例化逻辑的位置:
Mapper
.CreateMap<UserVM, User>()
.ConstructUsing(userVM =>
{
if (userVM.UserType == UserType.Teacher)
{
return new Teacher();
}
return new Student();
});
Run Code Online (Sandbox Code Playgroud)