您好,我无法让我的映射适用于继承的类。想法是只为基对象和接口创建一次映射,当子类实现自己的成员时,只为那些未在基类或接口中定义的成员配置映射。
让我从示例代码开始。
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 - 包含在基类中对我有用。什么会导致这样的问题?