我正在两个对象之间进行映射,并且根据源的条件,我希望目标为空。
例如,以下是这些类:
public class Foo
{
public int Code { get; set; }
public string Name { get; set; }
}
public class Bar
{
public string Name { get; set; }
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
还有我的地图:
Mapper.CreateMap<Foo, Bar>()
.AfterMap((s, d) => { if (s.Code != 0) d = null; });
Run Code Online (Sandbox Code Playgroud)
但似乎忽略了AfterMap。尽管具有所有默认属性,但 Bar 已初始化。
如何让映射器根据 Code 不等于 0 返回 null?
谢谢
一种可能的方法是 -
class Converter : TypeConverter<Foo, Bar>
{
protected override Bar ConvertCore(Foo source)
{
if (source.Code != 0)
return null;
return new Bar();
}
}
static void Main(string[] args)
{
Mapper.CreateMap<Foo, Bar>()
.ConvertUsing<Converter>();
var bar = Mapper.Map<Bar>(new Foo
{
Code = 1
});
//bar == null true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5132 次 |
| 最近记录: |