簡體   English   中英

在沒有泛型的情況下配置AutoMapper

[英]Configuring AutoMapper without Generics

我想在不使用泛型的情況下配置AutoMapper,因為我想在運行時進行配置。

我想配置SubstiteNulls方法,並能夠執行以下操作:

Mapper.CreateMap<Source, Dest>()
    .ForMember(dest => dest.Value, opt => opt.NullSubstitute("Other Value"));

但是我不知道該怎么做。 您可以將它們的Type對象傳遞給CreateMap工廠方法,但是當您使用ForMember方法時, opt對象不包含NullSubstitute方法,我想這是由於我在這里使用的泛型缺乏。

關於如何實現此目標的任何想法?

更新資料

這些是我得到的選擇:

在此處輸入圖片說明

當前,在使用非通用版本的CreateMap時,將在IMappingExpression接口上使用NullSubstitute配置。

沒有限制,可以阻止IMappingExpressionIMappingExpression上使用此方法,因此當前不支持此方法。

您有三種選擇:

  • 在Github上創建問題,並等待其實施
  • 分叉項目並自己實現方法。 您可以使用通用版本作為示例非常容易。
  • 或者,如果您想要快速但非常骯臟的解決方案。 通過反射,您可以從配置中獲取底層的PropertyMap並對其調用SetNullSubstitute方法:

     Mapper.CreateMap(typeof(Source), typeof(Dest)) .ForMember("Value", opt => { FieldInfo fieldInfo = opt.GetType().GetField("_propertyMap", BindingFlags.Instance | BindingFlags.NonPublic); var propertyMap = (PropertyMap) fieldInfo.GetValue(opt); propertyMap.SetNullSubstitute("Null Value"); }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM