[英]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
配置。
沒有限制,可以阻止IMappingExpression
在IMappingExpression
上使用此方法,因此當前不支持此方法。
您有三種選擇:
或者,如果您想要快速但非常骯臟的解決方案。 通過反射,您可以從配置中獲取底層的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.