我正在开发一个ASP.Net Web API。我有一个名为Task
的实体。使用静态工厂方法创建新任务以确保在创建之前进行一些检查。 Task
setter是私有的,确保使用我公开的公共方法进行更改。
我创建了一个TaskViewModel
类,其简单的公共属性与Task
实体的属性相匹配。
我的TaskController
HttpPost
方法获取Post请求正文中的值并将其映射到TaskViewModel
属性:
public IActionResult Post([FromBody]TaskViewModel task)
{
...
}
所以现在我有一个task
对象,其中包含创建新Task
对象所需的所有值。为此,我调用Task.CreateTask(...)
手动传入并匹配CreateTask
方法中的每个参数。
可以使用AutoMapper简化此过程。我知道它可以映射TaskViewModel
到Task
之间的值,但我不确定它在这种情况下是否有帮助?
答案 0 :(得分:0)
AM可以使用私人制定者进行映射。它也可以映射到构造函数参数(构造函数可以是私有的),但不能映射到任何方法的参数。 您可以告诉AM(通过调用ConstructUsing)在创建新实例时使用该方法,但为了避免复制参数,您需要使该方法接收源类或源类的某个成员。折衷的方法是映射到私有构造函数,并让工厂方法调用相同的构造函数。