2013-08-28 29 views
7

下面的代碼有什麼區別;法線貼圖與動態貼圖之間的差異 - automapper

List<Ogrenci> ogrenci = AutoMapper.Mapper.DynamicMap<IDataReader, List<Ogrenci>>((dt.CreateDataReader())); 

    var ogr = AutoMapper.Mapper.Map<IDataReader, IList<Ogrenci>>(dt.CreateDataReader()); 

當我嘗試使用下面的代碼;

AutoMapper.Mapper.CreateMap<IDataReader, Ogrenci>().ForMember(dest => dest.Numarasi, opt => opt.MapFrom(src => Convert.ToInt32(src["Numara"]))) 
      .ForMember(dest => dest.Adi, opt => opt.MapFrom(src => Convert.ToString(src["Ad"]))) 
      .ForMember(dest => dest.Soyadi, opt => opt.MapFrom(src => Convert.ToString(src["Soyad"]))); 

     List<Ogrenci> ogrenci = AutoMapper.Mapper.DynamicMap<IDataReader, List<Ogrenci>>((dt.CreateDataReader())); 
     var ogr = AutoMapper.Mapper.Map<IDataReader, IList<Ogrenci>>(dt.CreateDataReader()); 

我不能使用下面的代碼;

List<Ogrenci> ogrenci = AutoMapper.Mapper.DynamicMap<IDataReader, List<Ogrenci>>((dt.CreateDataReader())); 

但我可以使用下面的代碼;

var ogr = AutoMapper.Mapper.Map<IDataReader, IList<Ogrenci>>(dt.CreateDataReader()); 

您有什麼建議?

謝謝。

回答

6

當您在編譯時不知道源類型時,使用AutoMapper中的DynamicMap。您無法使用的原因

List<Ogrenci> ogrenci = AutoMapper.Mapper.DynamicMap<IDataReader, List<Ogrenci>>((dt.CreateDataReader())); 

是因爲DynamicMap不需要您指定源類型,只需指定目標類型。

AutoMapper features: Dynamic Mapping