Les DTO sont des objets stupides composés de getters/setters publics. Je les place généralement dans un espace de noms distinct appelé SomeProject.Dto. En général, j'essaie de garder les mêmes noms de propriété entre le DTO et la classe de domaine correspondante, éventuellement avec un certain aplatissement. Par exemple, mon client pourrait avoir un objet d'adresse, mais mon DTO aurait que aplati à:
public class CustomerDto {
public int Id { get; set; }
public string Name { get; set; }
public string HomeStreet { get; set; }
public string HomeCity { get; set; }
public string HomeProvince { get; set; }
public string HomeCountry { get; set; }
public string HomePostalCode { get; set; }
}
Vous pouvez réduire considérablement la quantité de code de mappage répétitif de traduire des objets de domaine en DTO en utilisant AutoMapper de Jimmy Bogard.
http://automapper.codeplex.com/
Merci pour l'exemple et l'explication James =) Mettez-vous chaque DTO dans un fichier séparé ou tous les DTO dans un seul fichier? Ne vous terminez pas avec beaucoup de nouveaux fichiers de classe juste pour les DTO seuls? –
J'ai mis chaque DTO dans des fichiers séparés. Ils sont tous dans un dossier distinct, qui est facilement effondré et ignoré. :) –
@JamesKovacs aurait-il un réel avantage à utiliser des structures avec seulement des champs membres (pas de getters et setters) au lieu de classes? –