【发布时间】:2020-05-24 23:33:36
【问题描述】:
Automapper 是一种匹配类型的方法,理想情况下,当您想要映射模型及其视图模型时。 但这不是我们可以在 C# 中使用隐式实现的相同方法吗? (假设两个模型具有相同的属性但名称不同,这种情况下,您需要在 AutoMapper 中指定模型之间的链接)
有了自动映射器
public class Employee
{
public string Name { get; set; }
public string Email { get; set; }
}
public class EmployeeViewItem
{
public string Name { get; set; }
public string Email { get; set; }
}
通常我们会这样做:
Employee employee = new Employee
{
Name = "John SMith",
Email = "john@codearsenal.net"
}
EmployeeViewItem viewItem = new EmployeeViewItem();
viewItem.Name = employee.Name;
viewItem.Email = employee.Email;
使用自动映射器
EmployeeViewItem employeeVIewItem = Mapper.Map<Employee, EmployeeViewItem>(employee);
现在,使用隐式 C# 参考
public class Employee
{
public static implicit operator EmployeeViewItem(Employee employee)
{
EmployeeViewItem viewItem = new EmployeeViewItem();
viewItem.Name = employee.Name;
viewItem.Email = employee.Email;
return viewItem;
}
public static implicit operator Employee(EmployeeViewItem ev)
{
var e = new Employee();
e.Name = ev.Name;
e.Email = ev.Email;
return e;
}
}
【问题讨论】:
-
取决于你所说的“更好”。
标签: c# automapper