依赖注入 – 在NInject中绑定MembershipProvider时是否应该使用I
我对NInject绑定很新,这里是NInject描述的.
> TransientBehavior – 类型的新实例将在每次请求时创建. 如果我想将MembershipProvider绑定到SqlMembershipProvider,我应该使用SingletonBehavior,因为我只需要一个sql会员提供者?
ASP.Net已经通过静态Membership类及其静态Provider属性提供了当前成员资格提供者的静态实例.绑定可能在您的Application_Start方法中,看起来像这样:
Bind<MembershipProvider>() .ToMethod(ctx => Membership.Provider); 再次,因为Memberhip.Provider是一个静态的,它已经像一个单例,所以你尝试应用的行为并不重要. 通过不指定上述代码段中的任何行为,Ninject将默认为暂时的行为.在这种绑定中,我相信这将相当于在每次需要注入MembershipProvider类型时调用lambda来返回Membership.Provider. 我想可能有一个明确指定单例行为的参数,因为Ninject可能会首次需要注入MembershipProvider“缓存”lambda返回的值,从而节省了执行lambda的开销.我不是100%肯定这是Ninject在这种情况下的工作,但它似乎是合理的. 所有这一切,我个人的喜好是使用OnePerRequestBehavior,这样我知道Ninject将会为每个请求调用我的lambda一次.不知道这是有必要的,但是我喜欢从Membership中获取提供者的想法.每次请求后都会提供一次,因为我想你不能对Membership.Provider设置的方式或时间做出假设,尽管你可能会发现你是否挖得足够与反射器. Bind<MembershipProvider>() .ToMethod(ctx => Membership.Provider) .Using<OnePerRequestBehavior>(); 祝你好运.抱歉你的问题在这里呆了这么久! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |