AutoMapper可以在这里帮忙吗?

时间:2017-08-23 14:00:49

标签: c# asp.net-web-api automapper

我正在开发一个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简化此过程。我知道它可以映射TaskViewModelTask之间的值,但我不确定它在这种情况下是否有帮助?

1 个答案:

答案 0 :(得分:0)

AM可以使用私人制定者进行映射。它也可以映射到构造函数参数(构造函数可以是私有的),但不能映射到任何方法的参数。 您可以告诉AM(通过调用ConstructUsing)在创建新实例时使用该方法,但为了避免复制参数,您需要使该方法接收源类或源类的某个成员。折衷的方法是映射到私有构造函数,并让工厂方法调用相同的构造函数。