這看起來像是一個非常簡單的問題,所以希望這很容易。使用Automapper在DataReader中將字符串轉換爲bool
我在Automapper簡單地轉換"Y"
和"N"
到true
和false
定製string
到bool
地圖。它沒有得到更簡單:
Mapper.CreateMap<string, bool>().ConvertUsing(str => str.ToUpper() == "Y");
這工作正常,在這個原始的例子:
public class Source
{
public string IsFoo { get; set; }
public string Bar { get; set; }
public string Quux { get; set; }
}
public class Dest
{
public bool IsFoo { get; set; }
public string Bar { get; set; }
public int Quux { get; set; }
}
// ...
Mapper.CreateMap<string, bool>().ConvertUsing(str => str.ToUpper() == "Y");
Mapper.CreateMap<Source, Dest>();
Mapper.AssertConfigurationIsValid();
Source s = new Source { IsFoo = "Y", Bar = "Hello World!", Quux = "1" };
Source s2 = new Source { IsFoo = "N", Bar = "Hello Again!", Quux = "2" };
Dest d = Mapper.Map<Source, Dest>(s);
Dest d2 = Mapper.Map<Source, Dest>(s2);
但是,讓我們說不是我想從DataReader
採取Source
數據:
Mapper.CreateMap<string, bool>().ConvertUsing(str => str.ToUpper() == "Y");
Mapper.CreateMap<IDataReader, Dest>();
Mapper.AssertConfigurationIsValid();
DataReader reader = GetSourceData();
List<Dest> mapped = Mapper.Map<IDataReader, List<Dest>>(reader);
對於Dest
in mapped
,IsFoo
財產是true
。我在這裏錯過了什麼?
我懷疑這可能是問題的一部分,並嘗試從'object'映射到'bool'而不是沒有運氣。我可能剛剛搞砸了,但我不想爲布爾值創建太大的映射 - 如果這甚至是一個有效的關注。 –