2
我使用AutoMapper,我已經註冊的類型轉換器可空長值長值映射像這樣:AutoMapper類型轉換器映射可空類型不可空類型
public class NullableLongToLongConverter : TypeConverter<long?, long>
{
protected override long ConvertCore(long? source)
{
return source ?? 0;
}
}
這工作得很好,並自動拾取任何可空的多頭被轉換爲多頭。
但是,我還有一些其他地圖想要將可空對齊轉換爲可空對齊。這些也最終使用這種類型的轉換器。例如,兩個屬性在下面的代碼中都被設置爲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();
}
}
這是一個簡單的例子嗎?因爲如果你想要的只是將null轉換爲long?爲0 AutoMapper爲您做到這一點。刪除你的'NullableLongToLongConverter',在你提供的示例中'映射後''NotNullableLong'將爲'0','NullableLong'在'Bar'中爲'null'。 – nemesv 2012-01-10 16:55:34
工作,謝謝。我沒有意識到AutoMapper的內置約定(以及int/long - > Enum!) – Tevin 2012-01-10 17:19:22