マッピング継承とTypeConverterを一緒に使用することはできません。Automapper - 継承マッパーがタイプコンバータで動作しません
私はこのコードを持っている:あなたが見ることができるように
/* 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>();
});
}
}
を、私は私が行うにはいくつかのより複雑な計算を持っているので、ちょうど上記のように値を割り当てる、にTypeConverterクラスからではないマッピングすることができるようにしたいです。
タイプコンバータを使用するとマッピングが機能しませんが、ConvertUsingを削除してForMemberでインラインマッピングを使用するとすべて正常に動作します。
これは私が紛失しているものですか?
PD。私は使用しています:AutoMapper:version = "4.2.1"、targetFramework = "net452"
あなたの答えをありがとう! – arosgab