2010-01-08 7 views
5

Wir werden einen benutzerdefinierten Rollenanbieter mit WCF verwenden. Die überschriebene Methode GetRolesForUser erfordert die Verwendung eines bereits vorhandenen RoleRepository.Wie kann die Abhängigkeitsinjektion über StructureMap für einen benutzerdefinierten Rollenanbieter mit WCF bereitgestellt werden?

Jetzt, mit einer gewöhnlichen Klasse, würden wir es konstruieren mit Hilfe von StructureMap und die RoleRepository Abhängigkeit würde über den Konstruktor injiziert werden.

Es ist jedoch WCF, das die benutzerdefinierte Rollenanbieterklasse erstellt und das über das Attribut "roleManager" in der Datei "web.config" deklariert wird.

Ich möchte nicht wirklich die RoleRepository Dependency in die benutzerdefinierte Rolle Probvrider-Klasse verdrahten, aber es sieht aus wie ich muss.

Irgendwelche Ideen?

Antwort

6

Der RoleProvider und verwandte Typen sind Vermächtnisse von ASP.NET, die berüchtigt dafür sind, nicht DI-freundlich zu sein. Sie benötigen einen Standardkonstruktor und es werden keine Hooks angeboten, um sie zu initialisieren. Es ist scheiße, aber so ist es.

In solchen Situationen ist das beste Mittel, den RoleProvider als Humble Object zu implementieren. Mit anderen Worten, der RoleProvider muss alle Abhängigkeiten verkabeln, aber von dort aus delegiert er alle Implementierungen an Ihre eigene offene und erweiterbare API.

+0

Yup, ausgezeichnete Idee. – user129345

Verwandte Themen