[英]Ignore properties when mapping derived type instance
這是簡單的層次結構:
abstract class Base
{
public int Id { get; set; }
}
class Derived : Base
{
public string Name { get; set; }
}
我需要克隆Derived
實例,但是我想跳過Id
值。 因此,我以這種方式配置映射器:
Mapper
.CreateMap<Base, Base>()
.Include<Derived, Derived>()
.ForMember(_ => _.Id, expression => expression.Ignore());
var original = new Derived
{
Id = 1,
Name = "John"
};
var clone = Mapper.Map<Derived>(original);
Console.WriteLine(clone.Id == 0); // writes 'False'
不論ForMember
調用如何, ForMember
將映射Id
的值。
此配置:
Mapper
.CreateMap<Derived, Derived>()
.ForMember(_ => _.Id, expression => expression.Ignore());
可以正常工作,但這不是一個選擇,因為它需要為每個派生類型設置ForMember
。
Automapper版本是2.2.1。 我究竟做錯了什么?
您是否嘗試過也Ignore
基類映射上的Id
屬性?
Mapper
.CreateMap<Base, Base>()
.ForMember(_ => _.Id, expression => expression.Ignore())
.Include<Derived, Derived>()
.ForMember(_ => _.Id, expression => expression.Ignore());
[...]常規具有更高的優先級,可以忽略基類映射中的屬性[...]
https://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritance
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.