2010-09-09 33 views
1

J'utilise AutoMapper pour mapper des entités de domaine pour afficher des modèles dans une application Asp.Net MVC. J'inscris ces classes de cartographie dans Castle Windsor afin qu'elles soient disponibles pour le contrôleur par injection de dépendance ctor. Ces classes de mappage possèdent une méthode CreateMap virtuelle dans laquelle je peux remplacer le mappage d'AutoMapper en lui indiquant comment mapper des champs de l'entité au modèle de vue, quels champs ignorer, en pointant sur des méthodes qui transforment les données, etc. ; grands félicitations aux personnes derrière AutoMapper! Jusqu'ici, j'ai enregistré les classes de mappage avec un style de vie Singleton à Windsor, mais l'une d'entre elles doit utiliser le IAuthorizationRepository de Rhino.Security dont les composants doivent être enregistrés en tant que Transient. Cela me force à enregistrer les classes de mappage également comme transitoires, car une classe de mappage singleton contenant une référence à un IAuthorizationRepository transitoire provoque des problèmes la seconde fois que le mappeur est utilisé (c'est-à-dire, ISession est déjà fermé). C'est un gaspillage de ressources pour enregistrer toutes ces classes de mappage avec un style de vie Transient, ce qui provoque l'instanciation de la classe de mappage et l'exécution de la méthode CreateMap chaque fois que le système souhaite mapper une entité de domaine à une vue modèle?Classes AutoMapper avec un style de vie Transitoire dans IoC

Ou devrais-je essayer de trouver un moyen de séparer le IAuthorizationRepository de la classe de mappage afin que je puisse garder les classes de mappage comme Singletons?

Merci Dan

Répondre

1

Une autre façon autour d'elle utilise le TypedFactoryFacility, puis au lieu d'injecter IAuthorizationRepository dans votre singletons vous pouvez injecter Func<IAuthorizationRepository>