Я хотел бы знать, что является наилучшей практикой при проектировании конструкторов объектов DTO.
говорят, что у меня есть объект Dto, подобный этому:
class CustomerDto
{
public string Name { get; set; }
public string Surname { get; set; }
public string Phone { get; set; }
...
}
Есть несколько способовсоздать объект:
Я мог бы объявить конструктор:
public CustomerDto(string name, string surname, string phone, ...)
{
this.Name = name;
this.Surname = surname;
this.Phone = phone;
...
}
Когда вы видите этот конструктор и сразу заключаете нарушение SRP (Single ответственность)?
Даже если этивсе атрибуты связаны между собой.
Можно также утверждать, что нет необходимости проверять свойства, так как это DTO и поведение НЕТ, и поведение должно быть скорее для объекта домена, с которым это сопоставляется.
В C # мы также можем более элегантно построить этот объект:
var dto = new CustomerDto ()
{
Name = "Some name",
Surname = "Some surname"
}
Или использовать свободный конструктор или фреймворк, такой как NBuilder.
Существует также использование Auto mappingрамки, такие как Automapper.Проблема также заключается в использовании контейнера Ioc, в котором ctor становится сложным, а также в связи с риском подмены аргументов, например, если вы передаете имя, где фамилия, или наоборот, проверка может пропустить это более простое, чем явное отображение, как указано выше.
Пожалуйста, помогите убедить меня, какой путь лучше.