Considérez le code ci-dessous (qui a été simplifié). J'ai une classe de service qui renvoie une liste d'objets DTO spécifiques qui appliquent chacun leur propre interface spécifique. Dans le code actuel, ils sont rentrés par itération à travers un jeu de données car je travaille avec le code hérité.
Comment créer / utilisons-t-on un DTO sans les nouveaux vers le haut ou l'utilisation du localisateur de service anti-motif? Il n'a pas fortement de sens de composer un objet DTO vide dans la racine de la composition et de l'injecter dans la classe de service via le constructeur, car j'utilise réellement la DTO comme variable temporaire de TRES en remplissant une liste. p> li>
Dans le code, vous pouvez voir un exemple de moi se débrouiller dans le DTO. Mais cela ne ressent pas beaucoup
mieux que si j'ai fait que les DTO ne mettent pas en œuvre des interfaces en premier lieu. Donc, ne devraient-ils pas implémenter des interfaces alors et donc, ne pas utiliser di avec DTO? P> LI>
ol>
3 Réponses :
Cela n'a pas beaucoup de sens pour moi d'utiliser des di pour DTO. J'utiliserais probablement le modèle d'usine pour obtenir DTO pour mes objets de modèle. p>
Les DTO n'ont pas besoin de leur cycle de vie géré par le conteneur; Je voudrais juste neuf code> eux. Ne pas trop ingénieur. P>
Je ne pense pas que les DTO devraient mettre en œuvre des interfaces, car elles ne sont pas susceptibles de mettre en œuvre un comportement qui changera. p>
Ils ne doivent pas non plus être injectés. Tous les objets ne devraient pas être. Je pense que c'est un appel approprié à la nouvelle: créez l'objet, utilisez-le, laissez-le sortir de la portée et être GC'D. P>
regarder automapper . Et je suis d'accord avec @duffymo, je n'utiliserais pas d'interfaces avec DTO's. Automapper est un objet basé sur la convention pour objet Mapper qui créera et renseignera votre DTO pour vous. Si rien d'autre, il vous sauvera beaucoup de taper. J'ai traversé l'exercice des routines de conversion d'écriture vers / de DTO avec des fautes de frappe associées. J'aimerais avoir trouvé un peu plus tôt automapper. Dans le cas de votre exemple (où j'ai nommé l'objet "de" objet de type ordre): ou à l'aide de linq p>
+1 bonne réponse. Vous devriez utiliser la prise en charge intégrée d'AM pour les tableaux de mappage, cependant, vous pouvez mapper.map
connexe: Stackoverflow.com/Questtions/4835046/...
Dupliquer avec des réponses intéressantes: Stackoverflow.com/Questtions/8135894/...