映射父类中的值

本文关键字:父类 映射 | 更新日期: 2023-09-27 18:25:17

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。为了编写更少的代码,我想使用父类的映射器。

ParentItemDTO.Map(model)此行返回类型为 ParentItemDTO

的对象

问题 - 如何将父类转换为子类?首先,我认为这将是工作,而我明白只有相反的方式起作用(从孩子到父母(

映射父类中的值

如果要

重用父类映射,可以更改/重载映射以传递到要映射到的实例:

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

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

不能直接将父级强制转换为子级。 C# 继承不是这样工作的。您可以选择使用父属性创建新的 Child 对象

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