Automapper - Vererbungs-Mapper funktioniert nicht mit Typkonverter
Mapping Inheritance und TypeConverter können nicht zusammen verwendet werden.
Ich habe diesen Code:
/* BaseClassTypeConverter.cs */
public class BaseClassTypeConverter : ITypeConverter<SourceClass, BaseClass> {
public BaseClass Convert(ResolutionContext context) {
if (context == null || context.IsSourceValueNull)
return null;
var src = (SourceClass)context.SourceValue;
return new BaseClass() {
CommonAttr = src.SourceAttr
};
}
}
/* AutoMapperConfig.cs */
public static class AutoMapperConfig {
public static void RegisterMappings() {
AutoMapper.Mapper.Initialize(config => {
config
.CreateMap<SourceClass, BaseClass>()
.Include<SourceClass, DerivedClass1>()
.Include<SourceClass, DerivedClass2>()
.ForMember(dest => dest.CommonAttr, o => o.MapFrom(src => src.SourceAttr));
//.ConvertUsing<BaseClassTypeConverter>(); // NOT WORKING
config
.CreateMap<SourceClass, DerivedClass1>()
.ForMember(dest => dest.Dummy, o => o.MapFrom(src => src.SourceAttr2))
.IncludeBase<SourceClass, BaseClass>();
});
}
}
Wie Sie sehen, möchte ich in der Lage sein, aus einer TypeConverter-Klasse zuzuordnen, da ich einige komplexere Berechnungen durchführen muss, und nicht nur Werte wie oben zuweisen möchte.
Wenn ich den Typkonverter verwende, funktionieren die Zuordnungen nicht. Wenn ich jedoch ConvertUsing entferne und die Inline-Zuordnung mit ForMember verwende, funktioniert alles einwandfrei.
Es ist etwas, was ich vermisse?
PD. Ich benutze: AutoMapper: version = "4.2.1", targetFramework = "net452"