Me gustaría saber cuál es la mejor práctica en el diseño de constructores de objetos DTO.C# D a constructor e inyección de dependencia
decir que tengo un objeto Dto así:
class CustomerDto
{
public string Name { get; set; }
public string Surname { get; set; }
public string Phone { get; set; }
...
}
Hay varias maneras de construir el objeto:
pude declarar un constructor:
public CustomerDto(string name, string surname, string phone, ...)
{
this.Name = name;
this.Surname = surname;
this.Phone = phone;
...
}
Cuando vea este constructor y de inmediato concluir una violación de SRP (responsabilidad única)?
Aunque estos atributos están todos relacionados.
También podría argumentarse que no es necesario validar las propiedades, ya que es una DTO y no tiene ningún comportamiento, y el comportamiento debería estar más bien en el objeto de dominio del que se asigna.
En C# también puede construir más elegante este objeto:
var dto = new CustomerDto()
{
Name = "Some name",
Surname = "Some surname"
}
O utilizar un constructor de fluidez o un marco como NBuilder.
También está el uso de marcos de mapeo automático como Automapper. El problema también es usar un contenedor Ioc, el código se vuelve complejo, así como el riesgo de intercambiar argumentos, por ejemplo, se pasa el nombre donde está el apellido o viceversa, la validación podría pasar por alto esta asignación más fácil que explícita como se indicó anteriormente.
Por favor ayuda a convencerme de cuál es la mejor manera.
posible duplicado de [Inyección de dependencia: ¿uso con Objetos de transferencia de datos (DTO)?] (Http: // stackoverflow.com/questions/6297322/dependency-injection-use-with-data-transfer-objects-dtos) –
Me encontré con este mismo problema, y decidí contra el constructor ... Por una razón simple: más tarde, en un mes, o 6 meses, yo u otra persona lo voy a ver y tengo que pensarlo de la misma manera que yo mismo (y usted) estamos pensando ahora. He encontrado que pensar mientras leo código es una indicación de que es demasiado complicado. – dferraro