C# ASP.NET Core-如何注入IOptionsMonitor<;T[]>;
如何将C# ASP.NET Core-如何注入IOptionsMonitor<;T[]>;,c#,asp.net-core,asp.net-core-mvc,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core Webapi,如何将IOptionsMonitor注入控制器 在appsettings.json中 { "MyArray": [ { "Name": "Name 1", "SomeValue": "Value 1", }, { "Name": "Name 2", "SomeValue": "Value 2", } ] } 在Startup.cs中 p
IOptionsMonitor
注入控制器
在appsettings.json中
{
"MyArray": [
{
"Name": "Name 1",
"SomeValue": "Value 1",
},
{
"Name": "Name 2",
"SomeValue": "Value 2",
}
]
}
在Startup.cs中
public void配置服务(IServiceCollection服务)
{
services.AddOptions();
services.Configure(Configuration.GetSection(“MyArray”);
}
在家庭控制器中
公共类HomeController:控制器
{
私有只读MyOptions[]MyOptions;
公共家庭控制器(IOptionsMonitor myOptions)
{
this.myOptions=myOptions.CurrentValue;
}
}
我要走了
在尝试激活“Api.Controllers.HomeController”时,无法解析类型“Microsoft.Extensions.Options.IOptionsMonitor”1[MyOptions[]]的服务。
异常
我可以通过
configuration.GetSection(“MyArray”).Get()访问配置,它可以工作,但我想将其作为构造函数参数注入。您需要创建一个类,将MyOptions[]
作为属性,然后注入该类并添加整个配置,而不使用节
public class Options
{
public MyOptions[] MyArray { get; set; }
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<Options>(Configuration);
}
public class HomeController : Controller
{
private readonly MyOptions[] myOptions;
public HomeController(IOptionsMonitor<Options> myOptions)
{
this.myOptions = myOptions.CurrentValue.MyArray;
}
}
public void配置服务(IServiceCollection服务)
{
services.AddOptions();
服务。配置(配置);
}
HomeController.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<Options>(Configuration);
}
public class HomeController : Controller
{
private readonly MyOptions[] myOptions;
public HomeController(IOptionsMonitor<Options> myOptions)
{
this.myOptions = myOptions.CurrentValue.MyArray;
}
}
公共类HomeController:控制器
{
私有只读MyOptions[]MyOptions;
公共家庭控制器(IOptionsMonitor myOptions)
{
this.myOptions=myOptions.CurrentValue.MyArray;
}
}
创建一个表示选项的类,其中一个属性是某种类型的数组。可能的重复不是重复-它们不注入数组,而是对象。在我写我自己的问题之前,我看到了这个问题。我希望它可以在没有包装的情况下完成,但我最终得到了这个解决方案。谢谢。谢谢,为我添加整个配置:D