我試圖將字符串的源對象的屬性轉換爲可爲空數據類型的目標對象屬性(int?,bool?,DateTime?)。我的源文件中的字符串類型的屬性可以爲空,當它們爲空時,等效的空值應該映射到目標屬性上。當屬性有值但空時,它可以正常工作 它引發異常{「字符串未被識別爲有效的布爾。「}使用Automapper 3.0進行可空類型轉換的空字符串?
public class SourceTestString
{
public string IsEmptyString {get; set;}
}
public class DestinationTestBool
{
public bool? IsEmptyString {get; set;}
}
我Converter類
public class StringToNullableBooleanConverter : ITypeConverter<string,bool?>
{
public bool? Convert(ResolutionContext context)
{
if(String.IsNullOrEmpty(System.Convert.ToString(context.SourceValue)) || String.IsNullOrWhiteSpace(System.Convert.ToString(context.SourceValue)))
{
return default(bool?);
}
else
{
return bool.Parse(context.SourceValue.ToString());
}
}
}
創建地圖
AutoMapper.Mapper.CreateMap<string,bool?>().ConvertUsing(new StringToNullableBooleanConverter());
地圖方法
SourceTestString source = SourceTestString();
source.IsEmptyString = "";
var destination = Mapper.Map<SourceTestString,DestinationTestBool>(source);
'IsNullOrWhiteSpace'也適用於空值 - 您不應該同時需要這兩項檢查。 –
感謝您的建議我會採取它,但它不能解決我的問題,但:( – Mady
它適用於我的工作正常。你使用什麼版本的AutoMapper? – Mightymuke