Blo*_*ked 5 c# structuremap asp.net-mvc membership-provider asp.net-mvc-2
我使用StructureMap做了一点工作,我设法在我的控制器中注入(通过构造函数注入)一个接口的具体类型存储库.
现在,我需要将存储库类型注入我的自定义成员资格提供程序.但是怎么样?我的自定义成员资格提供程序是通过Membership.Provider.ValidateUser(例如)创建的.
对于控制器我创建了一个这样的类:
public class IocControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(
System.Web.Routing.RequestContext requestContext,
Type controllerType)
{
return (Controller)
ObjectFactory.GetInstance(controllerType);
}
}
Run Code Online (Sandbox Code Playgroud)
并在Global.asax在Application_Start():
//...
ObjectFactory.Initialize(x =>
{
x.AddRegistry(new ArticleRegistry());
}
);
ControllerBuilder.Current.SetControllerFactory(
new IocControllerFactory());
//...
Run Code Online (Sandbox Code Playgroud)
但是如何使用StructureMap在我的自定义成员资格提供程序中注入具体类型?
我认为在这种情况下没有办法注入。
仅当“工厂”创建所需的实例、了解注入并且会员资格提供程序区域不幸显示其年龄时,注入才有效。当事情以不同方式完成时,它会被编码回来:)。
如果您将自定义成员资格提供程序与 ASP.NET MVC(版本 2+)一起使用,则可以通过从 DependencyResolver 请求来获取所需内容,如下所示:
DependencyResolver.Current.GetService<IRepository<User>>();
Run Code Online (Sandbox Code Playgroud)
或者您可以直接使用 ObjectFactory。
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |