问题标签 [ninject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dependency-injection - 依赖注入框架:我为什么要关心?
我正在阅读Injection by Hand和Ninjection(以及为什么使用 Ninject)。我遇到了两个困惑:
手动注射技术我已经熟悉了,但我不熟悉 Ninjection,因此不确定完整的程序如何工作。也许提供一个完整的程序会有所帮助,而不是像在该页面上所做的那样,将程序分解成碎片
我仍然不明白这如何使事情变得更容易。我想我错过了一些重要的东西。如果您正在创建一组注入然后在两个大组之间同时切换,我可以看到注入框架将如何有所帮助(这对于模拟等很有用),但我认为还有更多比起那个来说。但我不确定是什么。或者,也许我只是需要更多的例子来说明为什么这是令人兴奋的,以说明这一点。
asp.net-mvc - 有谁知道让 Ninject 2 在 ASP.NET MVC 中工作的好指南?
我正在努力使用文档来弄清楚我需要什么。无论如何,文档(据我所知)适用于 1.5。
注意:我不想扩展 NinjectHttpApplication
我已将其配置为在Application_Start()中使用NinejctControllerFactory ,但是当它尝试创建控制器时,我在KernelContainer.Kernel上得到一个空引用异常。如果我不扩展 NinjectHttpApplication,我应该在哪里配置内核?
c# - 将 IoC 与内部对象一起使用
我目前正在为我使用的程序编写一个开源 SDK,并且我在内部使用 IoC 容器(NInject)来连接我所有的内部依赖项。
我有一些标记为内部的对象,这样我就不会拥挤公共 API,因为它们仅在内部使用并且不应该被用户看到,比如工厂和其他对象。我遇到的问题是 NInject 无法创建内部对象,这意味着我必须将所有内部对象标记为公共,这会挤满公共 API。
我的问题是:有什么办法可以解决这个问题还是我做错了?
PS。我曾考虑过使用 InternalsVisiableTo 属性,但我觉得这有点异味。
dependency-injection - 在 NInject 中绑定 MembershipProvider 时应该使用 InSingletonScope 吗?
我对 NInject 绑定很陌生,这就是 NInject 所描述的。
- TransientBehavior - 每次请求时都会创建该类型的新实例。
- SingletonBehavior - 只会创建该类型的单个实例,并且为每个后续请求返回相同的实例。
- OnePerThreadBehavior - 每个线程将创建该类型的一个实例。
- OnePerRequestBehavior - 每个 Web 请求都会创建该类型的一个实例,并在请求结束时销毁。
如果我想将 MembershipProvider 绑定到 SqlMembershipProvider,我应该使用 SingletonBehavior,因为我只需要一个 sql 成员资格提供程序吗?
asp.net-mvc - Ninject 与 Unity 的 DI
我们正在使用 ASP.net MVC。
其中哪一个是最好的 DI 框架 Ninject 或 Unity,为什么?
c# - Ninject 编译错误
Ninject 看起来很棒,所以我想在我的项目中使用它。不幸的是,我仍在努力做最琐碎的绑定。[Inject] 属性编译得很好,但是编译器找不到“Bind”命令:
这里可能出了什么问题?
ninject - Ninject 清除已解决的实例
我有一些设置为单例的绑定。我希望它们始终返回相同的实例,直到我希望清除所有单例实例的某个点。我不想删除并重新添加绑定,只需清除已创建的实例即可。这可能吗?
.net - Ninject:如何根据依赖链设置绑定
Ok Dependency Ninja's,这里有一个给你的……
我想根据我从内核请求的类型更改 Ninject 构建依赖项的方式。
我有一个带有以下构造函数的 DbConnectionFactory 类:
对于“默认”绑定,我希望 Ninject 使用无参数构造函数:
我的代码中的某些类需要 Ninject 来提供 connectionString 参数。我尝试像这样设置绑定:
但是,我只让 Ninject 使用默认构造函数。
我一定遗漏了一些明显的东西!
wpf - 使用 Ninject 将依赖项注入 WPF
我有一个 WPF UserControl,我想将依赖项注入其中。使用Ninject执行此操作的最佳方法是什么?
举一个具体的例子:我有一个名为 MapView 的 UserControl,我想通过构造函数或属性注入将我的 IDialogueService 的实例注入其中。目前,我没有使用任何依赖注入,并且我的控件是在 XAML 中创建的:
创建 IKernel 并绑定 IDialogueService 非常简单。但我坚持如何使用内核将依赖项注入我的 MapView。我仍然是 Ninject 的新手,所以也许我缺少一些明显的东西。
我可以想到几种方法来解决这个问题:
在代码中实例化 MapView。从 XAML 中删除
<MapView ... />
,并将其添加到 GameWindow 的构造函数中:缺点:不使用 XAML 会带来额外的复杂性;GameWindow 依赖于 IKernel。
将实例化保留在 XAML 中,并改用属性注入:
缺点:Ninject 文档说 Inject() “不应该在大多数情况下使用”,所以我什至不知道它是否做了我认为它做的事情,或者在这里使用它是否有意义。而且GameWindow仍然对IKernel有依赖。
向 GameWindow 添加可注入参数/属性,将值传递给 MapView(可能通过 MapView 上的属性),然后使用
Get<GameWindow>()
. 缺点:现在我在各处手动传递依赖项,这是 DI 框架应该为我自动化的。实例化 GameWindow 后,遍历逻辑树并对所有内容调用 IKernel.Inject()。缺点:同样,我不知道 Inject() 是否按照我的想法做,或者在这里是否合适。调用者必须记住在实例化 GameWindow 后执行遍历可视化树和注入的操作。
有一个更好的方法吗?也许是 Ninject 的 WPF 扩展,它可以让我做一个Get<GameWindow>()
,并自动为我遍历逻辑树(如 #4 所示),对所有内容进行属性注入?如果没有这样的东西,我可以写吗?
你们如何将 Ninject 与 WPF 一起使用?您是否使用上述任何方法(如果是,您能否分享我不知道的优点/缺点)?你有更好的方法吗?
asp.net-mvc - 构建中等大小的 asp mvc - 使用 ninject 和创建对象
我正在使用 asp.net mvc 技术设计中型网站。所有业务逻辑都组织成 IService(如 IDomainService、IUserService、IAuthService、ITrainingService)。所有服务都使用 IRepositories。我正在使用 Ninject 1.5 将服务与控制器连接起来,它似乎工作得很好。
到目前为止,我不知道如何处理一个主题。一些服务创建上下文(每个请求) - 例如 IDomainService 创建 IUserService 所需的 DomainContext(每个请求)。ITrainingService 仅在 TrainingController 中使用,它只能由授权用户访问,并且 ITrainingService 需要 UserContext(也根据请求)来了解谁在接受培训。
这是我第一个使用 IoC 容器的项目。是否有任何设计模式或代码模式如何解决它?我想我可以使用 ActionFilters 填充上下文对象,但是如何管理它们的生命周期以及将它们放置在何处以供 IServices 访问?(以优雅的方式)