Automapper: игнорировать свойство унаследованного класса
У меня есть исходный класс, как это:
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 ответ
Хорошо, я думаю, у меня был бред, когда я писал этот код. model2.Property никогда не будет нулевым, потому что это метод получения, который всегда возвращает одну и ту же строку. У меня есть какой-то рефакторинг, но AutoMapper делал то, что ему нужно, я просто использовал его неправильно.