0

我正在开发一个 ASP.NET MVC 站点,该站点实际上使用自定义 profileProvider 来检索与存储在自定义数据库中的单个用户相关的信息(如访问的最后一页、在网格中查看的最大记录数、通过邮件通知等) . 我不喜欢这种技术,因为 profileProvider 不容易注入,有另一种方法来获得配置文件提供者公开的相同功能吗?我认为可能可以使用 asp.net 模块,但我不是专家。

4

2 回答 2

1

I think what tartafe means is that providers (also your custom ProfileProvider) are instantiated and controlled by external code (System.Web.Configuration.ProvidersHelper).

The Dependency Injection pattern says any objects your custom provider relies on, should be passed in by a controller (or container). Cfr. Dependency Injection for Loose Coupling). Typically your controller will initialize a repository, datacontext, or other object and pass it in through the constructor or a property. But that is not possible with a custom provider since its 'controller' is sealed in System.Web.Configuration.

I think the question than becomes: is there any way to influence how ProvidersHelper instantiates and controls our custom providers?

于 2011-02-13T01:27:52.623 回答
0

你到底是什么意思它不容易注射?

如果您只是不想在 Controller 中使用它,请创建一个操作过滤器,添加您查看数据所需的用户信息模型。

如果您的意思是您不希望 System.Web 依赖于您正在使用配置文件信息的某个地方,那么创建一个适配器接口,例如IProfileService并使用配置文件提供程序包装器实现它。

如果你的意思不是我猜的两件事,那么请试着解释一下,因为语言有点不清楚。

于 2011-02-01T00:42:09.067 回答