2016-11-08 48 views
0

私はスタートアップクラスでJSONファイルから設定を読み込むプロジェクト持ちで設定を上書きする方法:私は、データベースから新しい値でこれを上書きしたいMVCコア

services.Configure<ApplicationConfiguration>(
    Configuration.GetSection("ApplicationConfiguration")); 

を。

public MyClass(IOptions<ApplicationConfiguration> applicationConfiguration,) 
{ 
    applicationConfiguration = new DbApplicationConfiguration(); 
} 

DbApplicationConfigurationクラス:

public class DbApplicationConfiguration : IOptions<ApplicationConfiguration> 
{ 
    public ApplicationConfiguration Value 
    { 
     get 
     { 
      var configuration = new ApplicationConfiguration(); 
      configuration.Host = "myHost"; 
      // ... 
      return configuration; 
     } 
    } 
} 

この作業が、唯一のMyClass内れます。 コンテナ内の設定を上書きしたい。 私がIOptions<ApplicationConfiguration>を注入するたびに、私は新しい上書きされた値を取得します。

設定ページで設定を更新する必要があります。 IOptionが挿入されているすべてのクラスでインターフェイスを変更しないようにしたいと考えています。

これは可能ですか?

+0

DBからデータを読み込んで返すカスタムの「ConfigurationProvider」を書いてください。あるいは、 'Startup.cs'で明示的に値を上書きしてください。 https://docs.asp.net/en/latest/fundamentals/configuration.html#example-entity-framework-settingsをご覧ください。 – haim770

答えて

1

私はあなたがそれを行うための最も正しい方法は、カスタムConfigurationExtensionを提供することだと思います。例えば。

var builder = new ConfigurationBuilder() 
       .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
       .AddEnvironmentVariables() 
       .AddDatabaseValues(); 

あなたは読んでいる間に自分でメソッドを提供する必要がありますが、すべてのマージはフレームワークで行う必要があります。

IConfigurationProviderを実装してIConfigurationBuilderに追加する必要があります。あなたはそれを行う方法について非常に簡単な説明を見つけることができますhere

関連する問題