来自 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 具有类似的功能,可让您传入实例进行填充以及返回新实例。
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 具有类似的功能,可让您传入实例进行填充以及返回新实例。