我正在尝试将字符串源对象的属性转换为可为空数据类型的目标对象属性(int?,bool?,DateTime?)。我的源上的字符串类型的属性可以为空,当它们为空时,应将等效的 null 映射到目标属性。当属性具有值但为空时它可以正常工作它会引发异常 {“字符串未被识别为有效布尔值。"}
public class SourceTestString
{
public string IsEmptyString {get; set;}
}
public class DestinationTestBool
{
public bool? IsEmptyString {get; set;}
}
我的转换器类
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);