我使用依赖注入技术实现了角色提供程序。因为该类没有无参数构造函数(在那里注入了存储库),通常的web.config
注册方法不起作用。
我试图在我的Global.asax
应用程序启动事件中手动注册提供程序,但是我得到一个NotSupportedException
,指出无法修改Roles.Providers
集合。
Roles.Providers.Clear();
Roles.Providers.Add(new RepositoryRoleProvider(new MyRepositoryFactory()));
在没有无参数构造函数的情况下注册角色提供程序的正确方法是什么?
答案 0 :(得分:1)
有一篇文章介绍了how to implement and register a role provider。它使用的是“提供者模式”。
由于它使用“提供者模式”it is not possible to use constructor injection,因为构造函数被约束为使用默认的公共构造函数。
所以,你的选择并不好:
Initialize
方法中实例化您的存储库工厂(请注意,如果它有默认构造函数,您可以将其类型字符串放在配置文件中并使用Activator.CreateInstance
构建它)。如果您有选择,最好使用ASP.NET Identity而不是会员资格,因为它更适合DI。