乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c# – 使用ConstructServicesUsing的AutoMapper自定義類型轉(zhuǎn)換

       印度阿三17 2019-05-29

      根據(jù)AutoMapper Documentation,我應(yīng)該能夠使用以下方法創(chuàng)建和使用自定義類型轉(zhuǎn)換器的實(shí)例:

      var dest = Mapper.Map<Source, Destination>(new Source { Value = 15 },
          opt => opt.ConstructServicesUsing(childContainer.GetInstance));
      

      我有以下源和目標(biāo)類型:

      public class Source {
          public string Value1 { get; set; }
          public string Value2 { get; set; }
          public string Value3 { get; set; }
      }
      
      public class Destination {
          public int Value1 { get; set; }
          public DateTime Value2 { get; set; }
          public Type Value3 { get; set; }
      }
      

      以下類型的轉(zhuǎn)換器:

      public class DateTimeTypeConverter : ITypeConverter<string, DateTime> {
          public DateTime Convert(ResolutionContext context) {
              return System.Convert.ToDateTime(context.SourceValue);
          }
      }
      
      public class SourceDestinationTypeConverter : ITypeConverter<Source, Destination> {
          public Destination Convert(ResolutionContext context) {
              var dest = new Destination();
              // do some conversion
              return dest;
          }
      }
      

      這個簡單的測試應(yīng)斷言其中一個日期屬性被正確轉(zhuǎn)換:

      [TestFixture]
      public class CustomTypeConverterTest {
          [Test]
          public void ShouldMap() {
              Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());
              Mapper.CreateMap<Source, Destination>().ConstructUsingServiceLocator();
      
              var destination =
              Mapper.Map<Source, Destination>(
              new Source { Value1 = "15", Value2 = "01/01/2000", }, 
                  options => options.ConstructServicesUsing(
                      type => new SourceDestinationTypeConverter())
              ); // exception is thrown here
      
              Assert.AreEqual(destination.Value2.Year, 2000);
          }
      }
      

      但是在斷言發(fā)生之前我已經(jīng)得到了一個異常:

      System.InvalidCastException:無法將類型為“SourceDestinationTypeConverter”的對象強(qiáng)制轉(zhuǎn)換為“Destination”.

      我現(xiàn)在的問題是,如何使用ConstructServicesUsing()使用自定義類型轉(zhuǎn)換器?

      解決方法:

      我測試了這段代碼并使用以下代碼完成了這項(xiàng)工作:

      public void TestMethod1()
          {
              Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());
              Mapper.CreateMap<string, Type>().ConvertUsing(new StringTypeConverter());
              Mapper.CreateMap<string, int>().ConvertUsing(new StringIntConverter());
              Mapper.CreateMap<Source, Destination>();
      
              var destination =
              Mapper.Map<Source, Destination>(
              new Source { Value1 = "15", Value2 = "01/01/2000", Value3 = "System.String" },
                  options => options.ConstructServicesUsing(type => new SourceDestinationTypeConverter())
              );
      
              Assert.AreEqual(destination.Value2.Year, 2000);
          }
      

      額外的轉(zhuǎn)換器:

       public class StringTypeConverter : ITypeConverter<string, Type>
      {
          public Type Convert(ResolutionContext context)
          {
              return Type.GetType(context.SourceValue.ToString());
          }
      }
      
      public class StringIntConverter : ITypeConverter<string, int>
      {
          public int Convert(ResolutionContext context)
          {
              return Int32.Parse(context.SourceValue.ToString());
          }
      }
      

      Automapper缺少String到Type和String到Int的映射.
      此外,我不得不刪除以下行

      Mapper.CreateMap<Source, Destination>().ConstructUsingServiceLocator();
      

      并替換它

      Mapper.CreateMap<Source, Destination>();
      

      我不知道“ConstructUsingServiceLocator()”選項(xiàng),但是在這種情況下將它排除在外……(我不知道是否將其刪除會為你帶來其他問題.到目前為止我還沒有使用過它使用Automapper時的選項(xiàng).)

      請注意我必須添加“Value3”參數(shù),因?yàn)檗D(zhuǎn)換會失敗…將NULL值轉(zhuǎn)換為Type可能非常難……(而且我不知道這里發(fā)生了什么樣的轉(zhuǎn)換… .)

      來源:http://www./content-1-214251.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多