我正在使用AutoMapper,我已经注册了一个TypeConverter来将可以为空的长值映射到长值,如下所示:
public class NullableLongToLongConverter : TypeConverter<long?, long>
{
protected override long ConvertCore(long? source)
{
return source ?? 0;
}
}
这样可以正常工作,并自动获取任何可转换为long的可空长度。
但是,我有一些其他地图想要将可空的长片“转换”为可空的长片。这些也最终使用这种类型的转换器。例如,在下面的代码中,两个属性都设置为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<Foo, Bar>()
.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<long?, long>().ConvertUsing<NullableLongToLongConverter>();
ComplicatedMapRegister.RegisterMap();
}
}
答案 0 :(得分:0)
您只注册了从long?
映射到long
的转换器。您是否只需创建并注册一个将从long?
映射到long?
的“转换器”?