title: Converting string to bool within DataReader with Automapper
body: <p>This seems like a very simple question, so hopefully this will be easy.</p>
  
  <p>I have a custom <code>string</code> to <code>bool</code> map in Automapper that simply converts <code>"Y"</code> and <code>"N"</code> to <code>true</code> and <code>false</code>. It doesn't get much simpler:</p>
  
  <pre><code>Mapper.CreateMap&lt;string, bool&gt;().ConvertUsing(str =&gt; str.ToUpper() == "Y");
  </code></pre>
  
  <p>This works fine in this primitive example:</p>
  
  <pre><code>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&lt;string, bool&gt;().ConvertUsing(str =&gt; str.ToUpper() == "Y");
  Mapper.CreateMap&lt;Source, Dest&gt;();
  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&lt;Source, Dest&gt;(s);
  Dest d2 = Mapper.Map&lt;Source, Dest&gt;(s2);
  </code></pre>
  
  <p>However, let's say instead I want to take the <code>Source</code> data from a <code>DataReader</code>:</p>
  
  <pre><code>Mapper.CreateMap&lt;string, bool&gt;().ConvertUsing(str =&gt; str.ToUpper() == "Y");
  Mapper.CreateMap&lt;IDataReader, Dest&gt;();
  Mapper.AssertConfigurationIsValid();
  
  DataReader reader = GetSourceData();
  List&lt;Dest&gt; mapped = Mapper.Map&lt;IDataReader, List&lt;Dest&gt;&gt;(reader);
  </code></pre>
  
  <p>For every <code>Dest</code> in <code>mapped</code>, the <code>IsFoo</code> property is <code>true</code>. What am I missing here?</p>