假设我有以下实体:
public class Store
{
public List<Product> Products { get; set; }
public List<Employee> Employees { get; set; }
public List<Camera> Cameras { get; set; }
}
换句话说,Store
包含Products
、Employees
和安全Cameras
。我想将此 Store
转换为 StoreDTO
:
public class StoreDTO
{
public List<int> ProductIds { get; set; }
public List<int> EmployeeIds { get; set; }
public List<int> CameraIds { get; set; }
}
换句话说,StoreDTO
将只有实体 ID。
现在,我正在使用这段代码来设置 AutoMapper
:
Mapper.CreateMap<Product, int>().ConvertUsing(x => x.Id);
Mapper.CreateMap<Employee, int>().ConvertUsing(x => x.Id);
Mapper.CreateMap<Camera, int>().ConvertUsing(x => x.Id);
如您所见,它包含大量样板代码。有什么方法可以配置 AutoMapper
自动将引用类型的所有集合转换为整数集合?
最佳答案
我们通过一些 LINQ over reflection 来做到这一点。您可以使用 LINQ 查询从 Product、Employee 和 Camera 的某些基类派生的所有类型。接下来,循环调用 CreateMap 和 ConvertUsing 方法的那些类型。
没有类型扫描可言,这就是为什么像这样的东西实际上并不存在。但根据需要进行自己的类型扫描也不错。
关于c# - 如何配置 AutoMapper 将所有引用类型集合转换为整数集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764136/