需要将作用域服务注入到所有服务中



我有一个带有作用域服务的控制器。IMyService

我还有一个服务ISsecondaryService,它需要这个范围内的服务。

我的控制器在构造函数中设置属性MyPropertyIMyService

当我查看ISecondaryService's构造函数时,我需要具有相同的注入服务。

但是,MyPropertyISecondaryService中为空

是什么原因造成的?

我正在使用.NET Core 3.1

public interface IMyService
{
string MyProperty {get;set;}
}
public class MyService: IMyService
{
public string MyProperty {get;set;}
}
public MyController
{
public MyController(ISecondaryService secondaryService, 
IMyService myService): base( myService)
{
_myService = myService;
myService.MyProperty = "Hello";  
}
}
public SecondaryService: ISecondaryService
{
public SecondaryService(IMyService myService)
{
_myService = myService;
}
}

我需要_myService.MyProperty成为Hello

启动时我有

services.AddScoped<IMyService, MyService>();
services.AddTransient<ISecondaryService, SecondaryService>();


Paul

program.cs

builder.Services.AddScoped<IMyService>(new MyService());
builder.Services.AddScoped<ISecondaryService>(sp =>
{
var myService = sp.GetService<IMyService>();
return new ISecondaryService(myService);
});

您需要注册第一个服务,然后注册第二个服务并将第一个服务注入其中。从那里,如果您的控制器希望注入ISsecondaryService,它也将提供IMyService。

最新更新