【发布时间】:2017-03-13 16:35:08
【问题描述】:
您好,我无法让我的映射适用于继承的类。 想法是只为基对象和接口创建一次映射,当子类实现自己的成员时,只为那些未在基类或接口中定义的成员配置映射。
让我从示例代码开始。
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));
附加的代码当然不能工作。打电话时:
AutoMapper.Mapper.Map<ChildEntityClass, DtoClass>(instanceOfChildEntityClass);
我只得到CreateMap<ChildEntityClass, DtoClass>().中定义的映射成员
知道如何只为基类和接口实现一次映射吗? 是的,我想将所有类型 ChildEntityClass、BaseEntityClass 和 IField3 映射到 DtoClass。
欢迎任何关于优雅配置的提示。
编辑:为了清楚起见,我从子类中删除了不必要的 IncludeBase,但两者都没有
- 子类中的 IncludeBase
- 包含在基类中
为我工作。什么会导致这些问题?
【问题讨论】:
标签: c# inheritance automapper automapper-5