我需要从一个可为空的枚举到一个常规的枚举编写一个映射器。现在我用这个
CreateMap<FromEnum,ToEnum>();
CreateMap<FromEnum?,ToEnum>()
.ConvertUsing((source,dest,context) =>
context.Mapper.Map<FromEnum,ToEnum>(source ?? FromEnum.SomeDefaultvalue));
但是我不太喜欢这种解决方案。首先,意图不是很清楚,其次,仅当源枚举具有等效的“默认值”时,它才有效。当然,我可以使用
来重写第二张地图CreateMap<FromEnum?,context) =>
source == null ? ToEnum.SomeDefaultvalue : context.Mapper.Map<FromEnum,ToEnum>(source.Value));
但是我认为这将进一步降低可读性。
是否有某种方法可以将null代替整个地图,而不仅仅是成员?可以只使用一张地图吗? (我从不使用不可为空的FromEnum
)