public class Destination
{
public decimal Obj1 { set; get; }
public decimal Obj2 { set; get; }
public int Obj3 { set; get; }
}
public class Source
{
public decimal Obj1 { set; get; }
public decimal Obj2 { set; get; }
public decimal Obj3 { set; get; }
}
如何将Source
类映射到Destination
,但只有Decimal
类型与Automapper一起映射?
答案 0 :(得分:4)
我认为您可以使用条件映射:
以下示例仅映射源和目标类型为decimal的属性。您可以像这样定义映射:
Mapper.CreateMap<Source, Destination>()
.ForAllMembers(s=>s.Condition(t =>t.SourceType == typeof(decimal)
&& t.DestinationType == typeof(decimal)));
然后使用这样的映射:
var src = new Source();
src.Obj1 = 1;
src.Obj2 = 2;
src.Obj3 = 3;
var dst = Mapper.Map<Destination>(src);
dst变量现在只映射了Obj1和Obj2属性。 Obj3为0(int的默认值)。
不确定这是不是你的意思。也许您只想检查源属性类型或目标属性类型,但我希望您明白这一点。
以上是一种通用方法,如果将更多属性/类型添加到类中,它仍然有效。