AutoMapper TypeConverter将可空类型映射为不可空类型

我正在使用AutoMapper,并且我已经注册了一个TypeConverter来将可以为空的长值映射到长值,如下所示:

public class NullableLongToLongConverter : TypeConverter { protected override long ConvertCore(long? source) { return source ?? 0; } } 

这样可以正常工作,并自动获取任何可转换为longs的可空长度。

但是,我有一些其他地图想要将可空的长片“转换”为可空的长片。 这些也最终使用这种类型的转换器。 例如,在下面的代码中,两个属性都设置为0,但我希望NullableLong设置为null。 难道我做错了什么?

 public class Foo { public long? NullableLong{get {return null;}} ...... } public class Bar { public long NotNullableLong{get;set;} public long? NullableLong{get;set;} ...... } public static class ComplicatedMapRegister { public static void RegisterMap() { Mapper.CreateMap() .ForMember(b => b.NotNullableLong, opt => opt.MapFrom(f.NullableLong)) .ForMember(b => b.NullableLong, opt => opt.MapFrom(f.NullableLong)) ..... } } public static class AutoMapperRegistration { public static void RegisterAllMaps() { Mapper.CreateMap().ConvertUsing(); ComplicatedMapRegister.RegisterMap(); } } 

你只注册了一个long?映射的转换器long? long 。 你不是只需要创建并注册一个将从long?映射的“转换器” long?long?