问题标签 [light-inject]

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 投票
1 回答
287 浏览

unit-testing - LightInject - 注册同一接口的多个实现

使用 Lightinjector DI 框架如何注册同一接口的多个实现?如何在构造函数上提及相同的接口并要求其不同的实现?

在尝试注释时,遇到以下异常

容器注册如下,

类“User.cs”的构造函数注入如下,

0 投票
0 回答
137 浏览

c# - 如何在 LightInject 中注册一个接受参数的开放泛型?

我有以下通用类,这取决于IBar

理想情况下,我会在LightInject中使用类似的东西注册它:

这样在运行时,我就可以使用提供的值获取 IFoo 的实例:

但是由于使用了开放的泛型,这段代码显然无法编译IFoo<>

如果只有 Foo 不是通用类,那么根据官方文档,这一切都可以正常工作:https ://www.lightinject.net/#parameters 。

有通用类的解决方案吗?这可以用任何其他方式编写并且仍然可以实现相同的目标吗?我尝试使用以下语法,但我失去了使用接受值的委托的能力(或者至少我不知道该怎么做)......

任何想法?

0 投票
0 回答
50 浏览

unit-testing - 光注入 - 单元测试

我有一个具有多个实现的 c# 接口,每个实现都在其构造函数中采用各种依赖项对象。

为了在 web api 项目上使用 LightInjector 实现 DI,我注册了一个如下所示的“Func”,它按预期工作,但无法对其进行单元测试。

有什么方法可以以可单元测试的方式编写以下代码?

0 投票
0 回答
40 浏览

c# - Lightinject - 如何安全地开始新的范围外组合根?

我有 Windows 服务接受一些消息。我将 LightInject 用于 DI。每次有任何消息出现时,该服务都会通过 dbContext 写入数据库。因此,我需要将 dbContext 的生命周期限制为处理该消息,并在处理完消息后将其处理掉。我想知道是否可以为每条消息创建自己的范围。但我很难找出如何干净地做到这一点。

我有一些监听器,它使处理程序处理每条收到的消息。我需要在收到的消息事件上创建范围。但由于它在消费者的现有实例中,我没有可以在其上开始新范围的容器。而且我不能注入容器本身,因为这是不好的做法,根本行不通。那么有什么方法可以在合成根之外的任何地方在我的自定义事件上创建新范围?

我需要这样的东西:

服务根:

消费者:

处理程序:

0 投票
1 回答
45 浏览

c# - .netcore DI 容器中的 LightInject 等效寿命

从“LightInject”迁移到 .netcore DI 容器。

以下 LightInject 相关注册的.netcore DI 容器等效项是什么?

0 投票
1 回答
51 浏览

dependency-injection - .net 框架 - 如何创建 IServiceProvider 以使用 IServiceProvider 获取已注册的服务实例?

在没有内置 DI 容器的.NET Framework 4.6.2应用程序上,我们使用LightInject DI 容器进行对象初始化,但不知道如何在 Main() 中创建“IServiceProvider”对象,以便其他类实现可以获取已注册的服务实例 viaIServiceProvider不使用new关键字。

如何创建IServiceProvider对象?在 .net 框架 4.6.2 应用程序中

一旦IServiceProvider实例可供使用,我打算执行以下操作

根据史蒂文的建议进行修改