J'utilise AutoMapper pour faire correspondre des entités de domaine à des modèles de vue dans une application Asp.Net MVC. J'enregistre ces classes de mappage dans Castle Windsor afin qu'elles soient disponibles pour le contrôleur par l'intermédiaire de l'injection de dépendances ctor. Ces classes de mappage ont une méthode virtuelle CreateMap où je peux surcharger le mappage d'AutoMapper, en lui indiquant comment mapper les champs de l'entité vers le modèle de vue, quels champs ignorer, en pointant vers les méthodes qui transforment les données, etc. Tout cela fonctionne bien ; un grand bravo aux personnes à l'origine d'AutoMapper !
Jusqu'à présent, j'ai enregistré les classes de cartographie avec un style de vie singleton dans Windsor, mais l'une d'entre elles doit utiliser IAuthorizationRepository de Rhino.Security, dont les composants doivent être enregistrés comme transitoires. Cela m'oblige à enregistrer les classes de mappage également comme transitoires, car une classe de mappage singleton contenant une référence à un IAuthorizationRepository transitoire pose des problèmes la deuxième fois que le mappeur est utilisé (c'est-à-dire que les erreurs ISession sont déjà fermées).
Est-ce un gaspillage de ressources que d'enregistrer toutes ces classes de mappage avec un mode de vie transitoire, qui fera que la classe de mappage sera instanciée et que la méthode CreateMap sera exécutée chaque fois que le système voudra mapper une entité de domaine à un modèle de vue ?
Ou dois-je essayer de trouver un moyen de séparer IAuthorizationRepository de la classe de mappage afin de garder les classes de mappage en tant que Singletons ?
Merci Dan