来自 parent class 的地图值

Map values from parent class

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;
       }
    }

嗯,我有 parent 和 child class。我想将模型值映射到 DTO。 为了写更少的代码,我想使用 Parent class 的 Mapper。

ParentItemDTO.Map(model) 这一行 returns object 类型 ParentItemDTO

问题 - 如何将 Parent class 转换为 Child class?首先,我认为它会起作用,而我知道只有相反的方法起作用(从 Child 到 Parent)

您不能直接将 Parent 转换为 Child。 C# 继承不是那样工作的。您的选择是使用 Parent 属性创建一个新的 Child 对象

   var parentModel = ParentItemDTO.Map(model);
   var retModel = new ChildItemDTO 
                  {
                    Name= parentModel.Name,
                    Age= parentModel.Age,
                  };

如果您想重用父 class 映射,您可以 alter/overload 映射以传递实例以映射到:

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

AutoMapper 具有类似的功能,可让您传入实例进行填充以及返回新实例。