你好,我不能让我的映射工作继承类。 想法是仅为基础对象和接口创建映射一次,并且当子类实现其自己的成员时,为那些未在基类或intrface中定义的成员配置映射。Automapper 5.1.1继承映射
让我从示例代码开始。
public class DtoClass {
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
}
public interface IField3 {
public string EntityField3 { get; set; }
}
public class BaseEntityClass {
public string EntityField1 { get; set; }
}
public class ChildEntityClass : BaseEntityClass, IField3 {
public string EntityField2 { get; set; }
public string EntityField3 { get; set; }
}
CreateMap<BaseEntityClass, DtoClass>()
.ForMember(c => c.Field1 , m => m.MapFrom(a => a.EntityField1))
.Include<ChildEntityClass, DtoClass>();
CreateMap<IField3, DtoClass>()
.ForMember(c => c.Field3 , m => m.MapFrom(a => a.EntityField3));
CreateMap<ChildEntityClass, DtoClass>()
.ForMember(c => c.Field2 , m => m.MapFrom(a => a.EntityField2));
附加码dosnt work of course。打电话时:
AutoMapper.Mapper.Map<ChildEntityClass, DtoClass>(instanceOfChildEntityClass);
我只得到映射CreateMap<ChildEntityClass, DtoClass>().
任何想法如何实现基类的映射和接口只有一次中定义的成员? 是的,我想将所有类型ChildEntityClass,BaseEntityClass和IField3映射到DtoClass。
任何提示都欢迎优雅配置这种映射。
编辑:我是从子类中删除unecssary IncludeBase为清楚起见,但没有两者
的 - IncludeBase在子类 - 在基类 对我的作品包含。什么会导致这样的问题?
没有它仍然不起作用,只有调用配置为最后一次的映射,没有来自基类的映射。包括在基类中都不适合我。 而另一个问题接口是什么? 为了清楚起见,我在示例代码中删除了IncludeBase <>。 – PabloPC
确保使用Mapper.AssertConfigurationIsValid()测试您的配置文件。这可能会指出造成问题的原因。 – Richard
使用您的示例代码使用IncludeBase更新我的答案,它适用于我。 – Richard