gpt4 book ai didi

c# - AutoMapper 在源属性的条件下将目标设置为 null

转载 作者:行者123 更新时间:2023-11-30 16:50:58 25 4
gpt4 key购买 nike

我在两个对象之间进行映射,根据源的条件,我希望目标为空。

例如,这里是类:

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; }
}

还有我的 map :

Mapper.CreateMap<Foo, Bar>()
.AfterMap((s, d) => { if (s.Code != 0) d = null; });

但是好像忽略了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
}

关于c# - AutoMapper 在源属性的条件下将目标设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com