Automapper: игнорировать свойство унаследованного класса

2

У меня есть исходный класс, как это:

public class Basket {}

целевой класс, как это:

public class BasketModel 
{
    public string Property { get; set; }
}

и отображение как это:

Mapper.CreateMap<Basket, BasketModel>()
    .ForMember(x => x.Property, o => o.ResolveUsing(x => "anything"));

Теперь я сделал свойство "Свойство" в исходной модели виртуальным и создал новый класс, который наследуется от модели:

public class BasketModel 
{
    public virtual string Property { get; set; }
}
public class BasketModel2 : BasketModel
{
    public override string Property 
    { 
        get
        {
            return "some value";
        }
    }
}

Я обновил отображение как таковое:

Mapper.CreateMap<Basket, BasketModel>()
    .ForMember(x => x.Property, o => o.ResolveUsing(x => "anything"))
    .Include<Basket, BasketModel2>();

И создал отображение

Mapper.CreateMap<Basket, BasketModel2>()
    .ForMember(x => x.Property, o => o.Ignore());

Теперь, когда я пытаюсь отобразить в BasketModel2 вместо null, значение свойства равно "anything".

Что мне здесь не хватает?

  • 0
    @bommelding bommelding спасибо, исправил
  • 0
    И на самом деле оба они называются «собственностью»? Зачем проектировать модель с конфликтом имен? Тат является основным вопросом?
Показать ещё 1 комментарий
Теги:
automapper

1 ответ

0

Хорошо, я думаю, у меня был бред, когда я писал этот код. model2.Property никогда не будет нулевым, потому что это метод получения, который всегда возвращает одну и ту же строку. У меня есть какой-то рефакторинг, но AutoMapper делал то, что ему нужно, я просто использовал его неправильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню