AutoMapper and inheritance - How to Map?

前端 未结 5 767
北荒
北荒 2020-12-12 22:24

Have this scenario:

public class Base {  public string Name; }

public Class ClassA :Base {  public int32 Number;  }

public Class ClassB :Base { public st         


        
5条回答
  •  星月不相逢
    2020-12-12 22:52

    Following on from Eugene Gorbovoy's answer, if you're using profiles to configure your AutoMapper, you need to use a TypeConverter.

    Create a new TypeConverter like this

        public class NumberConverter : ITypeConverter
        {
            public NumberBase Convert(DTO source, NumberBase destination, ResolutionContext context)
            {
                if (source.Id % 2 == 0)
                {
                    return context.Mapper.Map(source);
                }
                else
                {
                    return context.Mapper.Map(source);
                }
            }
        }
    

    and replace the ConvertUsing line in his example with

      expression.CreateMap()
                .ConvertUsing(new NumberConverter());
    

提交回复
热议问题