Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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中的自定义选项类保存配置_C#_Configuration_Asp.net Core - Fatal编程技术网

C# 通过asp.net core中的自定义选项类保存配置

C# 通过asp.net core中的自定义选项类保存配置,c#,configuration,asp.net-core,C#,Configuration,Asp.net Core,我根据这篇文章编写了一个配置提供程序 在这里,我还重写了的Set方法,以将配置保存回数据库 public virtual void Set(string key, string value) { // save key / value pair to db. } 如果我像这样保存配置,这也可以正常工作: IConfiguration configuration = ... configuration["Key"] = "value"; 但如果我想通过自定义选项类保存它,则此操作不起作用

我根据这篇文章编写了一个配置提供程序

在这里,我还重写了的Set方法,以将配置保存回数据库

public virtual void Set(string key, string value)
{
   // save key / value pair to db.
}
如果我像这样保存配置,这也可以正常工作:

IConfiguration configuration = ...
configuration["Key"] = "value";
但如果我想通过自定义选项类保存它,则此操作不起作用:

public class MyOptions
{
   public string Key { get; set; }
}

public class HomeController : Controller
{
    private readonly MyOptions _options;

    public HomeController(IOptions<MyOptions> optionsAccessor)
    {
        _options = optionsAccessor.Value;
    }

    public IActionResult Index()
    {
        _options.Key = "new value"; // <-- not calling the set in my provider
    }
}
公共类MyOptions
{
公共字符串密钥{get;set;}
}
公共类HomeController:控制器
{
私有只读MyOptions\u选项;
公共家庭控制器(IOPS选项访问器)
{
_options=optionAccessor.Value;
}
公共IActionResult索引()
{

_options.Key=“新值”;//您的意思是
\u options.Key=“新值”
?@Romain噢,是的。感谢Set方法可能只在配置类的反序列化中调用,即当您在
MyOptions
实例中设置值时,它会留在那里…为什么不在
MyOptions.Key
setter上实现您的操作?@Romain感谢您的响应。反序列化是在n Load()方法。(请参阅)我不想在setter中实现它,因为它是一个poco,它不是这个类的责任。