加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – 在NInject中绑定MembershipProvider时是否应该使用I

发布时间:2020-12-13 20:24:47 所属栏目:百科 来源:网络整理
导读:我对NInject绑定很新,这里是NInject描述的. TransientBehavior – 类型的新实例将在每次请求时创建. SingletonBehavior – 只会创建一个类型的单个实例,并为每个后续请求返回相同的实例. OnePerThreadBehavior – 每个线程将创建一个类型的实例. OnePerReque
我对NInject绑定很新,这里是NInject描述的.

> TransientBehavior – 类型的新实例将在每次请求时创建.
> SingletonBehavior – 只会创建一个类型的单个实例,并为每个后续请求返回相同的实例.
> OnePerThreadBehavior – 每个线程将创建一个类型的实例.
> OnePerRequestBehavior – 每个Web请求将创建一个类型的实例,并且在请求结束时将被销毁.

如果我想将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>();

祝你好运.抱歉你的问题在这里呆了这么久!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读