问题标签 [ninject-3]
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.
ninject - 具有多个 From 的 Ninject 约定
我在 NinjectModule 中有一些代码,它为多个程序集中的所有接口设置 Mock 绑定。Ninject 2 允许我在lambda中From()
多次调用这些方法:Scan
From()
据我所知,Ninject 3 中的新方法不允许链式调用。这是我能想到的最好的等价物:
如上所示,当多次加载单个程序集时,我的新代码会中断*。注意first
和second
变量是不同类型的,所以我不能简单地将它们组合成一个调用。我的实际生产代码也有同样的问题,但我当然不是简单地对相同的程序集名称进行两次硬编码。
那么,我该如何重写上面的内容,以便我可以组合多个From()
调用并且只调用BindWith<>
一次呢?
编辑
* 绑定代码本身执行得很好。当我尝试获取绑定两次的程序集中存在的接口实例时,会发生异常。
model-view-controller - Ninject 3.0 MVC 内核扫描不起作用
Ninject 3.0 中的 kernel.Scan 发生了什么?
获取构建错误。“Ninject.IKernel”不包含“Scan”的定义,并且没有扩展方法“Scan”接受“Ninject.IKernel”类型的第一个参数
几个小时以来一直在敲我的头,试图弄清楚要改成什么。还没有看到任何好的网站或帖子解释如何简单地解决这个问题。
这一切都工作得很好,一些 ninject 得到了升级。经过数小时弄清楚为什么没有任何效果。我没有重新安装它(故意),不确定发生了什么,但现在我已经将所有内容重新安装到 3.0,认为它会更好,现在我陷入了缺乏任何帮助的困境。
c# - 在配置文件中动态注入基于值的 WCF ServiceContract 的具体实现
假设我有以下服务合同和两个具体实现:
这些属性带有 a ServiceBehavior
,以便我可以在服务运行时基于配置文件创建实例:
我的问题是如何根据配置文件中的变化值使用 Ninject 注入具体实现?看来我应该做以下事情:
然后在InstanceProvider
:
但是,在我更改配置文件中的值后,Ninject 中的绑定不会更改。有没有办法根据配置文件中的值更改绑定?我在这里做错了吗?
c# - 是否可以将不同的接口绑定到实现所有这些接口的类的同一个实例?
我有以下(简化的)情况:我有两个接口
和
和一个实现两者的类:
现在我使用 Ninject 将同一个类绑定到两个接口。因为我想要使用相同的beeing实例,很明显我需要某种单例。我玩过ninject.extensions.namedscope以及但没有成功。我最后一次尝试是:IAmAnImplementation
IAmAnInterface
IAmAnInterfaceToo
InScope()
但不幸的是,当我通过kernel.Get<IDependOnBothInterfaces>();
它请求我的测试类的实例时,实际上使用了不同的IAmAnImplementation
.
有没有办法告诉 Ninject 使用相同的IAmAnImplementation
forIAmAnInterface
和 as实例IAmAnInterfaceToo
?
conventions - Ninject 3.0 中基于约定的绑定
我正在尝试在我的新项目上设置 Ninject,并且我想使用 convections 扫描程序集,以便
将自动解析为
所有示例和文档都描述了使用这种方法
而 Ninject 3 Kernel 似乎使用 .Load 代替。如果我使用 Load 进行扫描,那么如何使用约定配置扫描?
编辑
我能够使用它来工作:https ://github.com/ninject/ninject.extensions.conventions/wiki/What-is-configuration-by-convention
但是,现在我无法加载我的模块。我正在使用下面的代码并得到下面的错误。
错误:
c# - 在 Ninject 3.0 中使用默认参数值
我有一个带有构造函数的类,该构造函数的参数具有默认值。使用 Ninject 2.2,它会尊重该[Optional]
属性并且可以正常工作,而没有针对这样声明的构造函数定义绑定:
自升级到 Ninject 3.0 以来,此对象的构造失败并显示一条消息,指出提供者返回 null:
测试方法 ValidatorIsolated.Tests.EmployeeValidatorTest.CreateEmployeeValidatorTest 抛出异常:
Ninject.ActivationException:使用 IValidator {PersonName} 的条件隐式自绑定激活 IValidator {PersonName} 时出错
提供者返回 null。
激活路径:
2) 将依赖项 IValidator{PersonName} 注入到 EmployeeValidator 类型的构造函数的参数 personNameValidator 中
1) 请求 IValidator{Employee}
建议:
1) 确保提供者正确处理创建请求。
当存在参数的默认值时,该[Optional]
属性是否仍然有效?使用诸如此类的可选参数处理注入的最佳方法是什么?
visual-studio-2010 - Ninject ToFactory 适用于 Resharper 单元测试,但不适用于 NCrunch
我正在使用 Ninject.Extensions.Factory 和 Ninject 3 创建一个工厂,它IFoo
根据提供给工厂的字符串创建不同类型的。我有一个通过单元测试,但奇怪的是,只在 Resharper 测试运行器中。在 NCrunch 测试运行器中它失败了。这是 NCrunch 配置问题,还是我需要更改代码?
界面:
Ninject 绑定:
考试:
NCrunch 例外:
.net - 使用 .NET 4 System.ServiceProcess.ServiceBase 将 Ninject v2 升级到 v3
我正在尝试使用 Ninject v3 测试托管在 .NET4 Windows 服务 ( System.ServiceProcess.ServiceBase
) 中的 Web 服务。
我创建MyServerModule : NinjectModule
,并在其中Load()
根据app.config
设置有条件地将我的接口绑定到运行时对象。
在ServiceBase.OnStart()
中,初始化步骤是:首先,StandardKernel
基于实例创建一个新的MyServerModule
,并将其与 Ninject 容器相关联。接下来,NinjectServiceHost
基于我的服务类创建一个实例,并打开服务主机开始监听。
在 Ninject v2 中,代码为:
但是,在 Ninject v3 中,KernelContainer
不再存在。此外,NinjectServiceHost()
现在接受子类化的服务器工厂IServiceBehavior
。
如何在 Ninject v3 中执行类似的初始化步骤?
asp.net-mvc-3 - 得到“找不到资源”。使用 Ninject 时出错
我正在开发一个 ASP.NET MVC 3.0 应用程序,使用 Ninject 作为我的依赖注入框架。
所以我从 NinjectHttpApplication 继承了我的控制器,如下所示:
但是每当我运行应用程序并尝试浏览到我的任何控制器时,我都会收到错误消息:
无法找到该资源。
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/Home/Index
这是什么原因造成的,我该如何解决?
ninject - Ninject 指定非引用组件的绑定范围
我有一个用于桌面应用程序和网络应用程序的库。
这个库引用了一个外部数据访问组件,在桌面上应该绑定为单例,在 web 上应该在请求范围内。
- 桌面项目参考核心项目
- Web 项目参考核心项目
- 核心项目引用 ExternalComponent
今天我被迫在网络客户端上这样做:
在桌面客户端上,相同但InSingletonScope()
强制我的 Web 和桌面应用程序引用 ExternalComponent.dll,这不是我的意图。
如何进行绑定,以便我可以从客户端(Web 或桌面)指定我需要此外部组件所在的范围,而无需客户端引用此数据访问组件?
我正在考虑核心项目上的一些方法,它接收客户端需要的范围并进行所有设置,但我在 Ninject API 中找不到让我这样做的东西。