假设你有以下类:
当您使用
有没有一种方法可以防止Automapper完全初始化目标成员?
有几种不同的方法,但它们大多数只涵盖了一部分情况。例如,您可以添加一个条件到映射中,仅在
有没有更好的方法可以处理这个问题,而不需要在外部添加大量特殊的条件呢?
附注:我可以通过提供一个顶级映射来使其工作,将string映射到JObject。但这意味着我必须对每种情况使用相同的逻辑,并且我只希望它适用于这一个属性。
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 ?? "")
}
);
当您使用
Data
的值映射一个Source
对象时,如果结果是空的json(例如,一个null值、一个空字符串或字符串"null",所有这些都导致JsonConvert返回null),则Destination.Data
的值最终被设置为空的JObject而不是null。有没有一种方法可以防止Automapper完全初始化目标成员?
有几种不同的方法,但它们大多数只涵盖了一部分情况。例如,您可以添加一个条件到映射中,仅在
Source.Data
不为null或空时应用。但如果Source.Data
是字符串"null",这种方法就不起作用了。有没有更好的方法可以处理这个问题,而不需要在外部添加大量特殊的条件呢?
附注:我可以通过提供一个顶级映射来使其工作,将string映射到JObject。但这意味着我必须对每种情况使用相同的逻辑,并且我只希望它适用于这一个属性。