我们将在WCF中使用自定义角色提供程序。重写的方法GetRolesForUser将需要使用已存在的RoleRepository。
现在,使用普通类,我们使用StructureMap构造它,并且将通过构造函数注入RoleRepository依赖项。
但是,它是WCF,它通过web.config中的roleManager属性来构造自定义角色提供程序类,并且“完成”。“/ p>
我真的不想将RoleRepository depndency硬连接到自定义角色probvider类,但它看起来像我必须要做的那样。
有什么想法吗?
答案 0 :(得分:6)
RoleProvider和相关类型是ASP.NET的遗产,因其不是DI友好而臭名昭着。它们需要一个默认的构造函数,并且没有提供初始化它们的钩子。它很糟糕,但就是这样。
在这种情况下,最好的解决方法是将RoleProvider实现为Humble Object。换句话说,RoleProvider必须连接所有依赖项,但从那里,它将所有实现委托给您自己的开放和可扩展API。