Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NETWebAPI:如何处理DTO和域对象之间的属性复制_C#_.net_Asp.net Web Api - Fatal编程技术网

C# ASP.NETWebAPI:如何处理DTO和域对象之间的属性复制

C# ASP.NETWebAPI:如何处理DTO和域对象之间的属性复制,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,假设我有一个ToDoItemModel概念,如下所示: public class ToDoItemModel { public int Id { get; set; } public DateTime DateAdded { get; set; } public string Title { get; set; } } 这将是我的DTO对象。我还需要能够调用ToDoItem上的一些方法,例如TransformTitle()或覆盖的ToString()属性: public cl

假设我有一个
ToDoItemModel
概念,如下所示:

public class ToDoItemModel
{
   public int Id { get; set; }
   public DateTime DateAdded { get; set; }
   public string Title { get; set; }
}
这将是我的DTO对象。我还需要能够调用
ToDoItem
上的一些方法,例如
TransformTitle()
或覆盖的
ToString()
属性:

public class ToDoItem
{
   public int Id { get; set; }
   public DateTime DateAdded { get; set; }
   public string Title { get; set; }


   public void TransformTitle(){
       this.Title = TranformationLogic();
   }

   public override string ToString()
   {
       return this.Title;
   }
}
我计划将
ToDoItemModel
用作控制器中的DTO(当从客户端发布信息时)。在保存到数据库之前,
ToDoItem
将用于对数据运行一些逻辑


但是,我们在模型和域对象之间存在重复(就其公共属性而言)。这感觉不对。解决此复制的最佳方法是什么?是否应该以某种方式将模型传递到
ToDoItem

看看您所说的属性复制到底是什么意思?您有一种典型的情况,即使用Automapper将一个对象复制到另一个对象。您可以对DTO对象执行一些转换,然后执行JUt使用Automapper将其映射到域对象。这就是Automapper的用途,用于轻松复制类似对象,甚至具有完全相同属性的对象(如本例中)。