映射对象列表

时间:2015-12-02 00:06:53

标签: c# dao dto object-object-mapping

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

映射器本身并不困难。我需要帮助的是映射列表。我是否需要在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对象的映射,但是有更好的方法来处理对象列表吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用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);
    }
}