我有一项服务想要在其他临时服务之间共享。目前它还不是真正的服务,但在现实生活中它会。如何使用依赖注入共享我的服务?
我在下面添加了一些演示代码。对于 MyCreatorService 的“范围”中的 MyTransientService1 和 MyTransientService2,SharedService 应该是相同的对象。
第二个断言失败了,而这是我想要完成的。
class Program
{
static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
{
services.AddScoped<SharedService>();
services.AddTransient<MyTransientService1>();
services.AddTransient<MyTransientService2>();
services.AddTransient<MyCreatorService>();
services.AddHostedService<MyHostedService>();
});
}
public class SharedService
{
public Guid Id { get; set; }
}
public class MyTransientService1
{
public SharedService Shared;
public MyTransientService1(SharedService shared)
{
Shared = shared;
}
}
public class MyTransientService2
{
public SharedService Shared;
public MyTransientService2(SharedService shared)
{
Shared = shared;
} …Run Code Online (Sandbox Code Playgroud)