Automapper 是一种匹配类型的方法,理想情况下当您想要映射模型及其视图模型时。但这与我们在 C# 中使用隐式实现的方法不一样吗? (假设两个模型具有相同的属性但名称不同,在这种情况下,您需要在 AutoMapper 中指定模型之间链接的模型)
有了 autommaper,我们就有了
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 = "[email protected]"
}
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;
}
}
AutoMapper 使用反射来映射属性(轻微的性能开销),允许高级自定义映射规则,并且在基本(常见?)场景中需要 1 行代码。
隐式运算符要求您指定每个属性,容易出错(添加新属性但不将其添加到运算符),更难以设置多种类型,创建大量无用的代码,甚至在最基本的设置中您仍然有 N 行代码,其中 N 是属性的数量。
我认为这是不言而喻的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)