2010-01-08 4 views
5

Nous allons utiliser un fournisseur de rôle personnalisé avec WCF. La méthode substituée GetRolesForUser nécessitera l'utilisation d'un RoleRepository déjà existant.Comment fournir une injection de dépendance via StructureMap pour un fournisseur de rôles personnalisé avec WCF?

Maintenant, avec une classe run-of-the-mill, nous la construirions en utilisant StructureMap et la dépendance RoleRepository serait injectée via le constructeur.

Cependant, c'est WCF qui construit la classe du fournisseur de rôle personnalisé et qui est 'done' déclaritavely via l'attribut roleManager dans le fichier web.config.

Je ne veux pas vraiment câbler la dépendance RoleRepository dans la classe probvider de rôle personnalisé, mais il semble que je devrais le faire.

Des idées?

Répondre

6

Le RoleProvider et les types associés sont des héritages d'ASP.NET qui sont tristement célèbres pour ne pas être compatibles DI. Ils nécessitent un constructeur par défaut et aucun hook n'est proposé pour les initialiser. C'est nul, mais c'est comme ça.

Dans de telles situations, le meilleur remède consiste à implémenter le RoleProvider en tant que Humble Object. En d'autres termes, le RoleProvider doit câbler toutes les dépendances, mais à partir de là, il délègue toute l'implémentation à votre propre API ouverte et extensible.

+0

Yup, excellente idée. – user129345

Questions connexes