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

YMC*_*YMC 5 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();
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 2

如果这是一个XY 问题,并且您正在尝试创建一些启动任务,则有一个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();
Run Code Online (Sandbox Code Playgroud)