假设您有以下类:
public class Source
{
public string Data { get; set; }
}
public class Destination
{
public JObject Data { get; set; }
}
然后你使用这个配置 AutoMapper:
Mapper.Initialize(
cfg =>
{
cfg.CreateMap<Source, Destination>()
.ForMember(
d => d.Data,
c => c.MapFrom(s => JsonConvert.DeserializeObject(s.Data ?? "")
}
);
当您将一个Source
对象映射为一个Data
导致 null json 的值(例如,一个 null 值、一个空字符串或字符串“null”,所有这些都会导致 JsonConvert 返回 null),最终的值Destination.Data
被设置为空 JObject 而不是 null。
有没有办法阻止 Automapper 初始化目标成员?
您可以做一些不同的事情,但其中大多数只涵盖部分案例。例如,您可以向映射添加条件以仅在Source.Data
不为空或不为空时应用。Source.Data
但如果是字符串“null”,这将不起作用。
有没有更好的方法来处理这个而不需要在外面添加一堆特殊的套管条件?
旁注:我可以通过提供字符串和 JObject 之间的顶级映射来使其工作。但这意味着我必须对每种情况使用相同的逻辑,并且我只希望它适用于这个属性。