dependency-injection - 需要访问在同一个 HostBuilder().ConfigureServices 中配置的 HostBuilder 内的服务实例

标签 dependency-injection .net-core

是否可以在 HostBuilder() 中访问 DI 配置服务的实例?配置?

这就是我的意思:

return new HostBuilder()
    .UseOrleans((cntx, builder) =>
    {
        builder.ConfigureApplicationParts(parts =>
        {
            // This is where I want to access instance of IMyService
            // in order to help Orleans builder to configure Orleans properly
        }
    })
    .ConfigureServices(services =>
    {
        services.AddSingleton<IMyService, MyService>();
    })
    .RunConsoleAsync();

最佳答案

如果结果是 XY problem ,并且您正在尝试创建一些启动任务,有一个 AddStartupTask 延期

return new HostBuilder()
    .UseOrleans((cntx, builder) => {            
        //Add a startup task to be executed when the silo has started.
        builder.AddStartupTask((sp, token) => {
            // access instance of IMyService
            IMyService service = sp.GetRequiredService<IMyService>();

            //...use service as needed

            return Task.CompletedTask;
        });
    })
    .ConfigureServices(services => {
        services.AddSingleton<IMyService, MyService>();
    })
    .RunConsoleAsync();

关于dependency-injection - 需要访问在同一个 HostBuilder().ConfigureServices 中配置的 HostBuilder 内的服务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57733476/

相关文章:

msbuild - ITask 在 .Net Core 项目构建过程中无法加载

spring - @Autowired 不应该在没有 @RunWith(SpringRunner.class) 的情况下工作,但可以

c# - 如何将依赖项注入(inject) System.Web.Http.AuthorizeAttribute 子类?

.net-core - 在 .NET Core 2 中使用 Microsoft.AspNetCore.All 时可能会遇到哪些问题?

c# - 从运行.Net Core的不同容器访问Docker卷文件

c# - 在 Linux 上使用 .NET Core 2.0 进行 Process.Start

go - 在 Go Wire 注入(inject)中使用单例模式

c# - IServiceLocator.GetInstance(Type) 的意图与 IServiceProvider.GetService(Type) 的意图有何不同?

c# - 无法加载文件或程序集

azure - 如何通过 Entity Framework 核心代码优先方法从 cosmosdb 集合中设置分区键?