可空枚举映射器的空替换

时间:2019-11-18 09:56:47

标签: c# automapper

我需要从一个可为空的枚举到一个常规的枚举编写一个映射器。现在我用这个

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

0 个答案:

没有答案