Абстрактные классы с автоматом - PullRequest
2 голосов
/ 13 октября 2011

У меня есть базовый класс:

public abstract class User
{
    /* properties */
}

public class Teacher : User
{

}

public class Student : User
{

}

Затем я хочу сопоставить мою модель представления одному из следующих дочерних классов на свойстве:

public enum UserType
{
    Teacher,
    Student
}

public class UserVM
{
    /* Properties of User */
    public UserType UserType {get; set;}
}

На основе UserVM.UserType я хотел бы сопоставить связанный дочерний класс:

userModel.UserType = UserType.Teacher;
//user will be of type Teacher
var user = Mapper.Map<UserVM, User>(userModel);

Как мне настроить мои CreateMap конфигурации для этого?

1 Ответ

7 голосов
/ 13 октября 2011

Вы можете использовать ConstructUsing, где вы поместите логику создания экземпляра на основе значения перечисления:

Mapper
    .CreateMap<UserVM, User>()
    .ConstructUsing(userVM =>
    {
        if (userVM.UserType == UserType.Teacher)
        {
            return new Teacher();
        }
        return new Student();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...