从父类映射值

时间:2015-12-01 16:48:31

标签: c# .net inheritance mapping

public class ChildItemDTO: ParentItemDTO
    { ...

       public static ChildItemDTO Map(ChildItem model)
       {
           if (model == null) return null;
           var retModel = ParentItemDTO.Map(model) as ChildItemDTO ;

           if (retModel != null)
           {
               ...
           }
           return retModel;
       }
    }

好吧,我有父母和子女班。我想将模型值映射到DTO。 为了编写更少的代码,我想从Parent类中使用Mapper。

ParentItemDTO.Map(model)此行返回ParentItemDTO

类型的对象

问题 - 如何将Parent类强制转换为Child类?首先,我认为这将是有效的,而我理解只有相反的方式(从孩子到父母)

2 个答案:

答案 0 :(得分:0)

您无法直接将父级转换为子级。 C#继承不起作用。您的选择是使用父属性

创建一个新的Child对象
   var parentModel = ParentItemDTO.Map(model);
   var retModel = new ChildItemDTO 
                  {
                    Name= parentModel.Name,
                    Age= parentModel.Age,
                  };

答案 1 :(得分:0)

如果要重用父类映射,可以更改/重载映射以传入实例以映射到:

       var retModel = new ChildItemDTO();
       ParentItemDTO.Map(model, retModel);
       // map child-specific fields here

AutoMapper具有类似的功能,允许您传入实例以填充以及返回新实例。