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