问题标签 [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.

0 投票
2 回答
271 浏览

ninject - 具有多个 From 的 Ninject 约定

我在 NinjectModule 中有一些代码,它为多个程序集中的所有接口设置 Mock 绑定。Ninject 2 允许我在lambda中From()多次调用这些方法:Scan

From()据我所知,Ninject 3 中的新方法不允许链式调用。这是我能想到的最好的等价物:

如上所示,当多次加载单个程序集时,我的新代码会中断*。注意firstsecond变量是不同类型的,所以我不能简单地将它们组合成一个调用。我的实际生产代码也有同样的问题,但我当然不是简单地对相同的程序集名称进行两次硬编码。

那么,我该如何重写上面的内容,以便我可以组合多个From()调用并且只调用BindWith<>一次呢?

编辑

* 绑定代码本身执行得很好。当我尝试获取绑定两次的程序集中存在的接口实例时,会发生异常。

0 投票
2 回答
2549 浏览

model-view-controller - Ninject 3.0 MVC 内核扫描不起作用

Ninject 3.0 中的 kernel.Scan 发生了什么?

获取构建错误。“Ninject.IKernel”不包含“Scan”的定义,并且没有扩展方法“Scan”接受“Ninject.IKernel”类型的第一个参数

几个小时以来一直在敲我的头,试图弄清楚要改成什么。还没有看到任何好的网站或帖子解释如何简单地解决这个问题。

这一切都工作得很好,一些 ninject 得到了升级。经过数小时弄清楚为什么没有任何效果。我没有重新安装它(故意),不确定发生了什么,但现在我已经将所有内容重新安装到 3.0,认为它会更好,现在我陷入了缺乏任何帮助的困境。

0 投票
2 回答
280 浏览

c# - 在配置文件中动态注入基于值的 WCF ServiceContract 的具体实现

假设我有以下服务合同和两个具体实现:

这些属性带有 a ServiceBehavior,以便我可以在服务运行时基于配置文件创建实例:

我的问题是如何根据配置文件中的变化值使用 Ninject 注入具体实现?看来我应该做以下事情:

然后在InstanceProvider

但是,在我更改配置文件中的值后,Ninject 中的绑定不会更改。有没有办法根据配置文件中的值更改绑定?我在这里做错了吗?

0 投票
1 回答
7022 浏览

c# - 是否可以将不同的接口绑定到实现所有这些接口的类的同一个实例?

我有以下(简化的)情况:我有两个接口

和一个实现两者的类:

现在我使用 Ninject 将同一个类绑定到两个接口。因为我想要使用相同的beeing实例,很明显我需要某种单例。我玩过ninject.extensions.namedscope以及但没有成功。我最后一次尝试是:IAmAnImplementationIAmAnInterfaceIAmAnInterfaceTooInScope()

但不幸的是,当我通过kernel.Get<IDependOnBothInterfaces>();它请求我的测试类的实例时,实际上使用了不同的IAmAnImplementation.

有没有办法告诉 Ninject 使用相同的IAmAnImplementationforIAmAnInterface和 as实例IAmAnInterfaceToo

0 投票
1 回答
2125 浏览

conventions - Ninject 3.0 中基于约定的绑定

我正在尝试在我的新项目上设置 Ninject,并且我想使用 convections 扫描程序集,以便

将自动解析为

所有示例和文档都描述了使用这种方法

而 Ninject 3 Kernel 似乎使用 .Load 代替。如果我使用 Load 进行扫描,那么如何使用约定配置扫描?

编辑

我能够使用它来工作:https ://github.com/ninject/ninject.extensions.conventions/wiki/What-is-configuration-by-convention

但是,现在我无法加载我的模块。我正在使用下面的代码并得到下面的错误。

错误:

0 投票
2 回答
3305 浏览

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]属性是否仍然有效?使用诸如此类的可选参数处理注入的最佳方法是什么?

0 投票
4 回答
1525 浏览

visual-studio-2010 - Ninject ToFactory 适用于 Resharper 单元测试,但不适用于 NCrunch

我正在使用 Ninject.Extensions.Factory 和 Ninject 3 创建一个工厂,它IFoo根据提供给工厂的字符串创建不同类型的。我有一个通过单元测试,但奇怪的是,只在 Resharper 测试运行器中。在 NCrunch 测试运行器中它失败了。这是 NCrunch 配置问题,还是我需要更改代码?

界面:

Ninject 绑定:

考试:

NCrunch 例外:

0 投票
1 回答
424 浏览

.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 中执行类似的初始化步骤?

0 投票
1 回答
777 浏览

asp.net-mvc-3 - 得到“找不到资源”。使用 Ninject 时出错

我正在开发一个 ASP.NET MVC 3.0 应用程序,使用 Ninject 作为我的依赖注入框架。

所以我从 NinjectHttpApplication 继承了我的控制器,如下所示:

但是每当我运行应用程序并尝试浏览到我的任何控制器时,我都会收到错误消息:

无法找到该资源。

说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Home/Index

这是什么原因造成的,我该如何解决?

0 投票
1 回答
283 浏览

ninject - Ninject 指定非引用组件的绑定范围

我有一个用于桌面应用程序和网络应用程序的库。

这个库引用了一个外部数据访问组件,在桌面上应该绑定为单例,在 web 上应该在请求范围内。

  • 桌面项目参考核心项目
  • Web 项目参考核心项目
  • 核心项目引用 ExternalComponent

今天我被迫在网络客户端上这样做:

在桌面客户端上,相同但InSingletonScope()强制我的 Web 和桌面应用程序引用 ExternalComponent.dll,这不是我的意图。

如何进行绑定,以便我可以从客户端(Web 或桌面)指定我需要此外部组件所在的范围,而无需客户端引用此数据访问组件?

我正在考虑核心项目上的一些方法,它接收客户端需要的范围并进行所有设置,但我在 Ninject API 中找不到让我这样做的东西。