问题标签 [servicecollection]
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.
.net - 构建 ServiceCollection 后如何替换注册(在运行时)?
3年后仍然不支持吗?看这个问题:.NET Core IServiceCollection Replace not refresh
我试图在 XamarinForms 中实现的是在用户选择之后,基于接口的注册类型(数据服务)的运行时替换。
我确实找到了Replace()
扩展功能,但我没有找到适合它的方法。
主要原因是 after HostBuilder.ConfigureServices()
,HostBuilder.Build()
似乎是必需的,但可能只被调用一次。那么如何更改注册呢?
或者这仍然不是故意的?那么,那有什么用Replace()
呢?
我指的是 Microsoft.Extensions.DependencyInjection.Extensions.ServiceCollectionDescriptorExtensions.Replace()。
asp.net-core - 清理 ServiceCollection 和 ServiceProvider 的“Pre”实例的正确方法?
我正在我的应用程序中实现自定义配置提供程序。
在该提供程序中,我必须进行 REST API 调用。该调用需要有效的 OAuth 2 令牌才能成功。为了得到那个令牌,我需要一个半复杂的类依赖树。
对于我的应用程序的其余部分,我只使用依赖注入来获取所需的实例。但是在设置依赖注入之前调用自定义配置提供程序。
我考虑过制作一个依赖注入的“Pre”实例。像这样:
但是我已经读过,当你制作另一个时ServiceCollection
,它可能会导致问题。我想知道避免这些问题的方法。
如何正确清理ServiceCollection
and的“pre-DI”实例ServiceProvider
?
(注意:似乎都没有实现 IDisposable。)
c# - C# 如何跨库边界在 IServiceCollection 中建立集合?
List<ICommand>
我通过构造函数注入一个通用列表。我的库的用户应该能够添加他们自己的ICommand
. 所有ICommand
实现在编译时都是已知的。目前,我添加ServiceCollection
了以下内容(我意识到还有其他方法可以做到这一点):
这适用于添加ICommand
当前库中定义的实现。但是,我希望其他人使用我的库并添加他们自己的ICommand
. ICommand
他们如何从这个List<ICommand>
库之外添加自己的?
我正在使用这个特定的例子List<T>
来理解一个更普遍的问题:“你如何使用”建立一个对象跨库边界ServiceCollection
?
c# - .NET Core 3.1 框架提供 DI - 如何获取已注册类型的实例?
在我的 .NET Core 3.1Startup.cs
中,我试图获取已注册类型的实例,即IBusinessLogic
using IServiceCollection
,但它不起作用。
如何在 .NET Core 3.1 中获取已注册类型的实例?
c# - .NET Core 依赖注入 - 如何处理手动创建的实例?
像下面的代码一样,我必须使用工厂/函数注册容器的方式,因为我提前不知道“userId”属性的值,但只能在运行时。这是有效的,功能方面没有问题。
由于这里我使用的是“new IDBCache”,因为链接框架不会自动处理服务。
问题:
要让框架自动处理服务,有什么出路吗?
容器。AddSingleton <Func<string, IDBCache>> (p=> (userId) => new IDBCache(userId, p.GetService()));
由于我只是注册 func/factory 的定义而不是服务对象(如“BLogic”),因此 AddSingleton 是否比使用下面的“AddScoped”或“AddTransisent”提供任何优势?
.net-framework-4.8 - 如何在 Net48 自托管应用程序中使用 DependencyResolver?
我得到了一个任务,其中包含创建一个包含“HttpSelfHostServer”的 .Net 4.8 应用程序。我一直在寻求将“IServiceCollection 服务”分配给 config.DependencyResolver(System.Web.Http.Dependencies.IDependencyResolver 类型)
我真的不想使用 autofac 或其他框架,但我能找到的所有指南都指向这些框架。微软不是提供了一种方法吗?
c# - 使用 ILogger没有构造函数注入
我有我的注册和构造函数设置来通过 Microsoft.Extensions.Logging 使用日志记录,如下所示,
public MyService(ILogger<MyService> logger) {}
不过,我想做的是services.AddSingleton()
在我的 Startup.cs 中使用以避免使用构造函数注入。原因是它需要在测试服务时修改所有单元测试以模拟记录器。
我相信有一种方法可以在 ServiceCollection 中注册 ILogger 的特定实例,但我无法理清所需的语法。
谢谢!
dependency-injection - .NET Core 依赖注入,用于多级、多实现依赖
我遇到过几篇文章,其中一个接口由多个类实现,并且依赖项已注册和解析。一篇这样的帖子就是这个。
但是如何解决多个、多层次的依赖关系呢?
例如:
ShortEnum
可以用作键。这意味着根据它的值,返回ConProvider
或DonProvider
返回。现在,提供者对 有依赖关系ISomeValidator
,这又取决于 的键值ShortEnum
可以解析为ConValidator
or的实例DonValidator
。
换句话说,我想构建以下两个对象图:
使用 .NET Core 3.1 内置依赖注入机制的最佳方式是什么?
asp.net-core - '某些服务无法构造(验证服务描述符时出错'ServiceType:IHostedService
我正在使用 .NET 5,我想使用IHostedService
classess 运行后台任务,如您所见:
所以我必须将它注入到服务集合中,如您所见:
但是在添加这个之后我得到了这个错误:
System.AggregateException:'某些服务无法构造(验证服务描述符时出错'ServiceType:Microsoft.Extensions.Hosting.IHostedService Lifetime:Singleton ImplementationType:MIMS.Portal.ScheduleJobs.PasargadJobs':无法使用范围服务'Microsoft .EntityFrameworkCore.DbContextOptions`1[MIMS.Portal.Infrustructure.Repositories.AppDbContext]' 来自单例'Microsoft.Extensions.Hosting.IHostedService'。)'
这是我的startup.cs