3

実行時に Settings.settings ファイルに新しい設定を作成する方法はありますか?

たとえば、あるクラス関数から設定ファイルに書き込み、別のクラス関数からその値を読み取りたいとします。いいえ、値を渡したくありません。

  • Settings.settings ファイルから値を取得する方法を知っています (値 = Properties.Settings.Default.XXX)
  • 既存の値を更新する方法を知っています (Properties.Settings.Default.XXX = newValue; Properties.Settings.Default.Save())

実行時に「名前」、「タイプ」、「スコープ」、および「値」を Settings.settings ファイルに追加する方法を知りたいです。

任意の提案をいただければ幸いです!

ありがとう、イヴァル

4

1 に答える 1

2

問題

アプリケーションの設定と値を設計するときに Visual Studio がコードを生成すると私は信じています。したがって、実行時にこれは容易ではなく、最悪の場合、設計者なしでは不可能です。ただし、実行時に設計機能を呼び出すことができる場合があります。

コード ビハインドには、デザイナーで作成した C# のプロパティが含まれていることがわかります。たとえば、次の設定を追加しました。

Age [int]  30. 

コード ビハインドは以下を生成しました。

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("30")]
public int Age {
   get {
       return ((int)(this["Age"]));
   }
   set {
       this["Age"] = value;
   }
}

(コード生成は、厳密に型指定された設定がある理由です)

実行時にこれと同じことができるかどうかはわかりません。コードを生成し、それを動的に JIT コンパイラーにフィードバックする必要があります。あるいは、設定に関する私の限られた理解の中で、私が知らない別の方法があるかもしれません。

提案/回避策

フープを飛び越える代わりに、別の/より簡単な方法を考え出すことをお勧めします。たとえば、1 つの設定をシリアライズ可能なコレクション型にして、複数の値を格納できるようにします。

次に、たとえば、1 つの設定で複数の年齢を保存できます。

Ages  [System.Collections.ArrayList]  {add multiple values programatically}

次のように管理する C# コードになる可能性があります。

System.Collections.ArrayList list = new System.Collections.ArrayList();
list.Add("1");
list.Add("30");
Properties.Settings.Default.Ages = list;
Properties.Settings.Default.Save();
于 2010-06-25T23:57:37.640 に答える