5

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

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

但是,它是 WCF 构建自定义角色提供程序类,并且通过 web.config 中的 roleManager 属性明确地“完成”。

我真的不想将 RoleRepository 依赖硬连接到自定义角色提供程序类中,但看起来我必须这样做。

有任何想法吗?

4

1 回答 1

6

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

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

于 2010-01-08T10:24:24.490 回答