【发布时间】:2019-06-12 07:04:14
【问题描述】:
如何将IOptionsMonitor<T[]> 注入控制器?
在 appsettings.json 中
{
"MyArray": [
{
"Name": "Name 1",
"SomeValue": "Value 1",
},
{
"Name": "Name 2",
"SomeValue": "Value 2",
}
]
}
在 Startup.cs 中
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyOptions[]>(Configuration.GetSection("MyArray"));
}
在 HomeController 中
public class HomeController : Controller
{
private readonly MyOptions[] myOptions;
public HomeController(IOptionsMonitor<MyOptions[]> myOptions)
{
this.myOptions = myOptions.CurrentValue;
}
}
我得到
Unable to resolve service for type 'Microsoft.Extensions.Options.IOptionsMonitor`1[MyOptions[]]' while attempting to activate 'Api.Controllers.HomeController'. 异常。
我可以通过configuration.GetSection("MyArray").Get<MyOptions[]>() 访问配置并且它可以工作,但我想将它作为构造函数参数注入。
【问题讨论】:
-
创建一个代表您的选项的类,即一个属性是某种类型的数组。
-
这不是重复的——它们不是注入数组,而是对象。我在写自己的问题之前就看到了这个问题
标签: c# asp.net-core asp.net-core-mvc asp.net-core-webapi