我有一个带有作用域服务的控制器。IMyService
我还有一个服务ISsecondaryService,它需要这个范围内的服务。
我的控制器在构造函数中设置属性MyPropertyIMyService
当我查看ISecondaryService's
构造函数时,我需要具有相同的注入服务。
但是,MyProperty
在ISecondaryService
中为空
是什么原因造成的?
我正在使用.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。