2

假设我有以下实体:

public class Store
{
    public List<Product> Products { get; set; }
    public List<Employee> Employees { get; set; }
    public List<Camera> Cameras { get; set; }
}

换句话说,Store具有ProductsEmployees和 安全性的 a Cameras。我想将其转换StoreStoreDTO

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自动将所有引用类型集合转换为整数集合?

4

1 回答 1

0

我们通过一些 LINQ over 反射来做到这一点。您可以使用 LINQ 查询从 Product、Employee 和 Camera 的某个基类派生的所有类型。接下来,遍历调用 CreateMap 和 ConvertUsing 方法的这些类型。

没有类型扫描可言,这就是为什么这样的事情不存在的原因。但是根据需要进行自己的类型扫描也不错。

于 2010-09-22T01:57:38.963 回答