当前位置: 首页 > 编程语言 > C#

同时使用InRequestScope和InTransientScope将Ninject解析为相同类型分享

时间:2023-04-11 11:22:46 C#

C#学习教程:同时使用InRequestScope和InTransientScope将Ninjects解析为同一类型我无法弄清楚发生了什么,因为我忘记了JobContext是InRequestScope但最后一段代码并没有按照我的想法去做。这是设置//NinjectmoduleBind().To().InRequestScope();//控制器的InitializeprotectedoverridevoidInitialize(System.Web.Routing.RequestContextrequestContext){base.Initialize(requestContext);//为jobContext设置连接字符串this.jobContext=DependencyResolver.Current.GetService();jobContext.SetYear(currentYear);由于JobContext是请求范围的,所以每年都会重复使用同一个对象。这是我需要InTransientScope而不是InRequestScope的唯一实例。//特殊函数foreach(intyearinActiveYears){jobContext=DependencyResolver.Current.GetService();jobContext.SetYear(年);做一点事();}我怎样才能做到这一点?出现的一个问题是,如果您确实需要JobContext请求范围,则有时在其他情况下需要瞬态范围。似乎有一种设计味道!请在执行以下操作之前尝试解决此问题。如果您真的想按照您描述的方式进行操作,则必须指定两个不同的命名绑定,一个在瞬态范围内,一个在请求范围内,它们是按名称获取的。this.Bind().To().InRequestScope().Named("RequestScoped");this.Bind().To().InTransientScope().Named("TransientScoped");kernel.Get("RequestScoped");另一件事:我试图摆脱Ninject核心的ServiceLocator类型使用,而是使用依赖注入。我会得到更好的设计。以上就是C#学习教程:同时使用InRequestScope和InTransientScope,将Ninject解析为同类型分享的所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注。本文来自网络收集,不代表侵权,请点击右边联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢