问题标签 [open-generics]

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 投票
0 回答
137 浏览

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

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

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

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

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

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

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

任何想法?

0 投票
1 回答
314 浏览

c# - 如何在 Dot Net Core 中实现 Open Generic Constructor Injection

我有一个审计日志接口:

现在在主 AppDbContext 界面中,我将其继承为:

在主 AppDbContext 类中,我继承为:

问题是,在依赖注入时,我试图像这样注入它:

我也尝试了其他方法,但无法获得成功 - 我收到的一些错误消息是:

错误信息:

  1. Message=提供的泛型参数的数量不等于泛型类型定义的数量。
  2. 无法实例化实现类型“Common.Application.Interfaces。IAuditDbContext 2[T1,T2]' for service type 'Common.Application.Interfaces.IAppDBContext2[T1,T2]'

请求帮助以正确实施它。

0 投票
0 回答
53 浏览

c# - 向接口注册 IRequest

我正在尝试执行以下操作:

我的 Autofac 配置如下:

当我执行请求时:

我收到以下错误:

System.InvalidOperationException:'找不到处理程序类型为 MediatR.IRequestHandler`2[ExampleQuery[ExampleClass1],ExampleClass1] 的请求。向容器注册您的处理程序。

我了解运行时无法找到具有提供的类的处理程序,因为它尚未正确注册。我想要实现的目标真的可能吗?我缺少 Autofac 配置中的任何内容吗?

0 投票
2 回答
52 浏览

c# - 使用 Microsoft DI 在泛型类型的构造函数中注入原始类型

我正在尝试使用依赖注入来添加具有构造函数参数的通用服务。我需要实现这个,一般来说:

这就是我使用开放泛型所做的工作:

我无法使用 opengenerics 添加构造函数参数。这是我要添加 DI 的类: