Mi piacerebbe sapere qual è la migliore pratica nella progettazione dei costruttori di oggetti DTO.C# Dto constructor e dependency injection
dire che ho un oggetto Dto come questo:
class CustomerDto
{
public string Name { get; set; }
public string Surname { get; set; }
public string Phone { get; set; }
...
}
Ci sono diversi modi per costruire l'oggetto:
ho potuto dichiarare un costruttore:
public CustomerDto(string name, string surname, string phone, ...)
{
this.Name = name;
this.Surname = surname;
this.Phone = phone;
...
}
Quando si vede questo costruttore e concludere immediatamente una violazione SRP (Responsabilità singola)?
Anche se questi attributi sono tutti correlati.
Si potrebbe anche obiettare v'è alcuna necessità di convalidare le proprietà come questo è un DTO e non ha il comportamento e il comportamento dovrebbe essere piuttosto sull'oggetto dominio che questo le mappe da.
In C# si può anche più elegante costruire questo oggetto:
var dto = new CustomerDto()
{
Name = "Some name",
Surname = "Some surname"
}
Oppure utilizzare un costruttore fluente o di un quadro, come NBuilder.
C'è anche l'uso di framework Auto mapping come Automapper. Il problema sta anche usando un contenitore Ioc che il Ctor diventa complesso, così come il rischio nello scambio di argomenti, ad esempio, si passa in nome dove è il cognome o viceversa, la convalida potrebbe perdere questa mappatura più facile quindi esplicita come sopra.
Si prega di aiutare a convincermi che è il modo migliore.
possibile duplicato di [Dipendenza iniezione: utilizzo con oggetti Data Transfer (DTO)?] (Http: // stackoverflow.it/questions/6297322/dependency-injection-use-with-data-transfer-objects-dtos) –
Mi sono imbattuto in questo stesso problema e ho deciso contro il costruttore .. Per una semplice ragione: più tardi, in un mese o 6 mesi, io o qualcun altro lo vedremo e dovremo pensarci allo stesso modo in cui io stesso (e te stesso) stiamo pensando ora. Ho trovato il pensiero mentre leggevo il codice è un'indicazione che è troppo complicato. – dferraro