Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Core-如何注入IOptionsMonitor<;T[]>;_C#_Asp.net Core_Asp.net Core Mvc_Asp.net Core Webapi - Fatal编程技术网

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