对象的映射列表

本文关键字:列表 映射 对象 | 更新日期: 2023-09-27 18:25:19

我正在手动创建一个映射器,将DAO对象转换为DTO。***顺便说一句,我知道自动映射器,但出于几个原因,我想手工完成。

映射器本身并不难。我需要帮助的是映射列表。我需要在foreach循环中处理每个对象映射吗?或者有更好的方法来创建一个既能处理单个对象映射又能处理对象列表映射的映射器吗?

我的DAO对象如下所示:

MyObjectDao
{
    public int Id { get; set; }
    public string Name { get; set; }
}

假设我的DTO对象是这样的:

MyObjectDto
{
   public int Id { get; set; }
   public string Name { get; set; }
   public string SomeOtherProperty { get; set; }
}

我的映射器就这么简单:

public MyObjectDto ConvertFromDaoToDto(MyObjectDao daoObject)
{
   MyObjectDto dtoObject = new MyObjectDto();
   dtoObject.Id = daoObject.Id;
   dtoObject.Name = dtoObject.Name;
   return dtoObject;
}

如上所述,我可以通过FOREACH循环来处理每个DAO对象到DTO对象的映射,但有更好的方法来处理对象列表吗?

对象的映射列表

您可以考虑使用AutoMapper。

我还将创建一个MyObjectDtoMapper类来封装转换:

public class MyObjectDtoMapper 
{
    public MyObjectDtoMapper()
    {
        // configure AutoMapper here
    }
    public MyObjectDto Map(MyObjectDao daoObject)
    {
       var dtoObject = // map from daoObject with AutoMapper
       return dtoObject;
    }
    public IEnumerable<MyObjectDto> Map(IEnumerable<MyObjectDao> daoObjects)
    {
       return daoObjects.Select(Map);
    }
}