dependency-injection 相关问题

一种设计模式,通过动态地向软件组件中注入需要运行的依赖项来减少组件之间的耦合。

未通过依赖项注入接收 SignalR 事件

我正在努力将 SignalR 集成到 AspNetCore 项目正在使用的错误/异常日志记录包中。 日志记录包提供了两种记录错误的方法: 手动通过

回答 1 投票 0

如何在 blazor .net 8 中以不同渲染模式渲染的组件之间共享要注入的状态?

我对 .net8 中的双项目设置有点困惑,特别是围绕 DI 和不同渲染模式之间共享状态。 现在,以这个示例服务为例 公共类GuidService { ...

回答 1 投票 0

Hangfire 在运行时在作业范围内注册 IoC 依赖项

问题:大多数作业都依赖于配置依赖性。 理想的解决方案:(如果您已经确切知道如何执行此操作,则复制此处和最后只是为了节省阅读时间) 我想 在工作期间 Q (u...

回答 1 投票 0

从 canActivate 创建时,Angular 材质对话框未接收 MAT_DIALOG_DATA

我正在尝试读取 canActivate 函数中给定路线上的查询参数,如果它不存在,则显示一个模式,说明它无法正常工作。 当我更多地思考这个问题时,因为它是...

回答 1 投票 0

Spring 3.2 默认为@Autowired

Spring 3.2默认的自动装配方法是什么?所以假设我有这门课 公共类 Saxophonist 实现 IPerform{ @覆盖 公共字符串执行(){ 返回“我是A

回答 5 投票 0

由 ActivatorUtilities.CreateInstance() 创建的服务是否由 DI 容器自动处置?

基本的.NET依赖注入指南文档说: 容器负责清理它创建的类型,并在 IDisposable 实例上调用 Dispose。服务从容器解决...

回答 1 投票 0

Maui:CreateMauiApp 之外的 AddHttpClient 和 AddSingleton

我正在使用 Prism 和 DryIoc 将应用程序从 Xamarin Forms 迁移到 Maui,并且需要在 CreateMauiApp 函数之外注册服务和 HttpClientFactory(原因是我不知道最终结果...

回答 1 投票 0

.net 8 AddHttpClient 未按预期工作

我正在像这样注册我的 HttpClient: builder.Services.AddHttpClient(i => { i.BaseAddress = new Uri("https://google.com"); //这里永远不会断点

回答 1 投票 0

尝试导入材料时出现错误NG0203

我在尝试导入材料时遇到问题。我使用了与material.angular.io 上的示例类似的代码,但我得到“必须从注入上下文调用inject()......

回答 2 投票 0

使用反射在 .NET 依赖注入中动态注入通用接口和实现

我的 .NET (6,7,8) 库中有一个方法 (RegisterType),可以动态扫描并注册依赖项注入容器中的服务。它对于非通用服务效果很好,但我很挣扎......

回答 1 投票 0

编译项目时出现 Dagger-hilt 错误

使用匕首柄时出现以下错误 元数据版本不受支持。检查您的 Kotlin 版本 >= 1.0:java.lang.IllegalStateException:不支持的元数据版本。检查您的

回答 2 投票 0

以任意编程语言进行依赖注入的静态类型?

是否有在应用程序中将值设置为常量一次,或者以其他方式允许它被覆盖但仍然被视为静态类型语言中的常量之类的事情?我在想象

回答 1 投票 0

Angular 16 独立依赖注入问题

以下是我包含服务的独立 api 调用: 从 '@angular/core' 导入 { Injectable} ; 从 '../../constants/apiConstants/product-endpoints' 导入 { ProductEndPoints }; 导入 {

回答 1 投票 0

使用服务的自定义记录器需要相同的实例

我使用 ILoggingBuilder 和 ILoggerProvider 模式编写了一个自定义记录器,如 .net 文档中所述 我的记录器需要在应用程序中构建服务,我能够将该服务传递给我们...

回答 1 投票 0

带参数的类的 Dart 依赖注入

我正在尝试了解依赖注入并尝试在 Flutter/Dart 中使用它。我已经浏览了 get_it 库,我发现它非常有用。 但我对依赖性有疑问

回答 5 投票 0

注射超过 1 个成分

我正在尝试完全了解依赖注入机制以及IoC容器的功能。 我创建了一个带有接口的简单项目及其实现: 公共接口 Anima...

回答 1 投票 0

避免实现工厂中的循环依赖

我正在进程内使用Azure Functions。 我的功能之一是一个端点,它可以根据请求数据执行许多操作,根据所述请求数据,将调用命令类的执行方法...

回答 1 投票 0

从 EF Core 中的部分类访问 DbContext

我正在构建 Hangfire 应用程序,并将数据库搭建到 EF Core。现在我创建了一个新的分部类,并且从该新分部类中我想访问 DbContext,以便我可以执行以下操作

回答 1 投票 0

完成实现:使用接口进行依赖注入的容器

我希望完成此实施。 它是一个非常简单的容器模型,用于使用 Delphi 中的接口进行依赖注入。 我在 YouTube 上看一堂课,其中的方法是

回答 1 投票 0

.NET Core 依赖注入在更新到版本 5.0.0 后出现“不明确的构造函数”错误

我有许多使用 API 服务的类,其构造函数遵循以下模式: 公开课 SomeClass { 公共SomeClass(IHttpClientFactory工厂,ILogger 我有许多使用 API 服务的类,其构造函数遵循以下模式: public class SomeClass { public SomeClass(IHttpClientFactory factory, ILogger<SomeClass> logger = null) { // ... } public SomeClass(HttpClient client, ILogger<SomeClass> logger = null) { // ... } } 第一个构造函数是 .NET Core 内置依赖注入使用的构造函数(通过从 IServicesCollection.AddHttpClient() 方法调用 Startup.ConfigureServices(),然后在构造函数中调用 IHttpClientFactory.CreateClient());第二个构造函数主要用于单元测试,以允许传入 HttpClient (或模拟)。到目前为止,这一直运行良好,但今天早上我开始收到如下错误: 发生了未处理的异常 系统.InvalidOperationException: 无法激活类型 '服务'。 以下构造函数是不明确的:Void .ctor(System.Net.Http.IHttpClientFactory, Microsoft.Extensions.Logging.ILogger`1[服务])无效 .ctor(System.Net.Http.HttpClient, Microsoft.Extensions.Logging.ILogger`1[服务]) 在 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache 生命周期、类型服务类型、类型实现类型、CallSiteChain 呼叫站点链) ...长堆栈跟踪被删除... 到目前为止,这一直有效。当 IHttpClientFactory 和 HttpClient 不共享任何公共接口时,依赖注入机制认为构造函数是不明确的,这似乎很奇怪。 我周末将 Visual Studio 19 更新到最新版本 (16.8.2) 以及解决方案中的所有 NuGet 包。 Microsoft.Extensions.DependencyInjection 软件包现在版本为 5.0.0;之前版本是 3.1.9。我现在已经解决了这个问题,删除了采用 HttpClient 参数的构造函数,并将测试中的代码替换为使用模拟 IHttpClientFactory,因此实际影响很小。然而,如果没有别的办法的话,了解一下为什么会出现这种情况,会有助于我内心的平静。我是否忽略了配置 .NET Core 依赖注入的某些方面?或者解决依赖关系的策略在 3.1.9 和 5.0.0 版本之间是否发生了微妙的变化? 我在 .net 7 上遇到了这个错误。但是在阅读了有关 .Net 依赖注入的 Microsoft 博客之后,它让我明白了。 对于我的工作来说,我需要使用依赖注入和依赖反转来实例化我的逻辑,或者我们可以将其称为混合。这样我就可以将我的逻辑用于长时间运行的任务和正常的 HttpRequest 线程,而不是单独重复逻辑。 更新 正如Ken Karen在评论中所展示的正确观点是“The constructor with the most parameters where the types are DI-resolvable is selected”。 我们必须接受构造函数的两个参数以避免歧义。 public class SomeClass: ISomeClass { //constructor that we intend to inject using DI //The constructor with the most parameters, going to be selected public SomeClass(HttpClient client, IHttpClientFactory factory, ILogger<SomeClass> logger = null) { // ... } //construtor that we intend to instantiate using DPI public SomeClass(HttpClient client, ILogger<SomeClass> logger = null) { // ... } } OtherClass.cs public class OtherClass { private readonly SomeClass someClass; private readonly ISomeClass _someClass; //using DI to get "SomeClass" instance public OtherClass(ISomeClass iSomeClass) { _someClass = iSomeClass; //dependency inversion (DPI) someClass = new SomeClass(httpClient, logger); } } 也许你的问题已经解决很久了,但我希望这对有类似情况的解决方案查找者有所帮助。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.