Внедрение зависимостей - использование с объектами передачи данных (DTO)?

Рассмотрим код ниже (который был упрощен). У меня есть класс обслуживания, который возвращает список конкретных объектов DTO, каждый из которых реализует свой собственный интерфейс. В фактическом коде они заполняются путем повторения набора данных, поскольку я работаю с устаревшим кодом.

Вопросы:

  1. Как нам создать / использовать DTO, не обновляя их или не используя антишаблон Service Locator? Нет смысла составлять пустой объект DTO в корне композиции и внедрять его в класс Service через конструктор, потому что я бы фактически использовал DTO как временную переменную при заполнении списка.

  2. В коде вы можете увидеть пример того, как я новичок в DTO. Но это не так уж много лучше, чем если бы я вообще заставил DTO не реализовывать интерфейсы. Так не должны ли они тогда реализовать интерфейсы и, таким образом, не использовать DI с DTO?


public class Services : IServices
{    
    public IList<IDTO> GetDTOs()
    {    
        ...
        List<IDTO> dtos = new List<IDTO>();
        foreach (c in d) 
        {
            DTO dto = new DTO();
            dto.x = c.x;
            dto.y = c.y;
            dto.z = c.z;
            dtos.Add(dto);
        }
        return dtos;
    }    
}
6
задан skaffman 24 July 2011 в 18:55
поделиться