Рассмотрим код ниже (который был упрощен). У меня есть класс обслуживания, который возвращает список конкретных объектов DTO, каждый из которых реализует свой собственный интерфейс. В фактическом коде они заполняются путем повторения набора данных, поскольку я работаю с устаревшим кодом.
Вопросы:
Как нам создать / использовать DTO, не обновляя их или не используя антишаблон Service Locator? Нет смысла составлять пустой объект DTO в корне композиции и внедрять его в класс Service через конструктор, потому что я бы фактически использовал DTO как временную переменную при заполнении списка.
В коде вы можете увидеть пример того, как я новичок в 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;
}
}