如何通过StructureMap为具有WCF的自定义角色提供程序提供依赖注入?

时间:2010-01-08 09:59:58

标签: wcf dependency-injection structuremap roleprovider

我们将在WCF中使用自定义角色提供程序。重写的方法GetRolesForUser将需要使用已存在的RoleRepository。

现在,使用普通类,我们使用StructureMap构造它,并且将通过构造函数注入RoleRepository依赖项。

但是,它是WCF,它通过web.config中的roleManager属性来构造自定义角色提供程序类,并且“完成”。“/ p>

我真的不想将RoleRepository depndency硬连接到自定义角色probvider类,但它看起来像我必须要做的那样。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

RoleProvider和相关类型是ASP.NET的遗产,因其不是DI友好而臭名昭着。它们需要一个默认的构造函数,并且没有提供初始化它们的钩子。它很糟糕,但就是这样。

在这种情况下,最好的解决方法是将RoleProvider实现为Humble Object。换句话说,RoleProvider必须连接所有依赖项,但从那里,它将所有实现委托给您自己的开放和可扩展API。