J.W*_*.W. 10 dependency-injection ninject
我是NInject绑定的新手,这是NInject描述的内容.
如果我想将MembershipProvider绑定到SqlMembershipProvider,我应该使用SingletonBehavior,因为我只需要一个sql成员资格提供程序吗?
Pet*_*yer 13
ASP.Net已经通过静态Membership类及其静态Provider属性提供了当前成员资格提供者的静态实例.绑定可能在您的Application_Start方法中,看起来像这样:
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider);
Run Code Online (Sandbox Code Playgroud)
同样,因为Memberhip.Provider是一个静态的,它有点像单例,所以你尝试应用的行为并不重要.
通过不在上面的代码段中指定任何行为,Ninject将默认为瞬态行为.在这种绑定中,我相信每次需要注入MembershipProvider类型时,调用lambda会返回Membership.Provider.
我想可能有一个明确指定单例行为的参数,因为Ninject可能会在第一次注入MembershipProvider时"缓存"lambda返回的值,实际上节省了执行lambda的开销.我不是百分之百确定Ninject是如何在这种情况下工作的,但它似乎是合理的.
所有这一切,我个人的偏好是使用OnePerRequestBehavior,这样我知道Ninject将为每个请求调用我的lambda一次.不确定是否有必要,但我喜欢每次请求从Membership.Provider获取提供程序的想法,因为我认为你无法对Membership.Provider如何或何时设置进行假设,尽管你可能会发现你是否挖掘得足够多用反射器.
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider)
.Using<OnePerRequestBehavior>();
Run Code Online (Sandbox Code Playgroud)
祝好运.对不起你的问题在这里待了这么久!
| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |