Automapper: игнорировать свойство унаследованного класса - PullRequest
0 голосов
/ 23 октября 2018

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

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".

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

1 Ответ

0 голосов
/ 23 октября 2018

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

...