2013-08-23 5 views
7

私はこれについてまだ満足のいく答えを見ていないので、私は尋ねると思った。ファイルにUI設定を保存するためのベストプラクティスはありますか?ファイルにUI設定を保存するベストプラクティスはありますか?

シナリオは、ファイル/フォルダの配列を他のランダムなもの(外部コマンドを実行するときに使用するフラグ、選択可能な比較アルゴリズムに渡すオプションの引数)と一緒に格納するC# 、など)。これらの値の性質上、組み込みのapp.configメソッドを使用することはできません。セミコンプレックス設定を設定ファイルに保存する際のベストプラクティスはありますか?

現在、私が格納している最も複雑なのは、ファイル名、比較アルゴリズム、および引数テキストを格納する必要がある単一のエントリを持つリストです。すべての単純なキー/値のデータではありません。

私は上の考えを探しています

  • レイアウト(例:XMLた場合、値はnode.value対属性にする必要があります。)
  • フォーマット(XML、YAML、など)
  • フレームワーク

これは機密データを格納しないため、セキュリティは問題になりません。

私は現在、XmlDocumentを使用し、それぞれのコレクションごとにクラスを分けようとしています。しかし、すでにこのための既存のフレームワークがあるはずです。

ありがとうございました!

+0

私はその質問への答えはすべて1がWPFの設定および/またはそのファイルの場所を保存する方法を説明するように、これは重複していない感じ。私は構造化された設定とベストプラクティスを格納することを検討しています。 –

+0

「ベストプラクティス」は「これについてあなたの意見は何ですか?」と同義語です。それは、議論の余地のある答えが問題を引き起こすため、話題から離れています。 –

答えて

2

app.configを乱雑にしたくない場合は、カスタム設定セクションを定義して別の設定ファイルに設定することもできます。カスタム構成モジュールを使用すると、独自の複雑な設定用の構造を定義し、標準の構成ファイルに格納することができます。 Entity Framework、Enterprise Libraryなどを使用している場合は、おそらくファイルの先頭に定義されています。 Googleのクイック検索で、件名のStackOverflow記事がもう一度表示されました。

How to create custom config section in app.config

+0

私はこれらの行に沿って何かを考えていました。ありがとうございました! –

9

このような設定はapp.configファイルに保存しないでください。それはちょうどそこに混乱を加えます。この場合、すでにチケットに記載されているように、別の設定ファイルを作成する方がよいでしょう。

この設定ファイルをXMLドキュメントとして構造化する予定です。これは素晴らしい考えです。これは、設定データが構造化されていることを意味します。それも素晴らしいです。

JSONをお勧めします。これにより、実行時にコードの行数を少なくしてアプリケーションに設定設定を読み込ませることができます。試してみてくださいNewtonSoft.JSON(別名JSON.Net)。

あなたはすぐに構成設定を追加して使用するために次の手順に従ってください可能性があります

  1. Nugetパッケージマネージャに
  2. を使用してNewtonSoft.JSONをインストールするには、NewtonSoftを使用して(あなたのプロジェクトとは.csファイルに、このライブラリへの参照を追加します。 Json)
  3. 設定のC#クラスを作成します。繰り返しブロックの場合は、List<string>または他の関連するデータ型、さらにはintを使用することができます。したがって、型変換も不要です。
  4. として文字列オブジェクト
  5. 使用JsonConvert.DeserializeObject()に読み込まJSONファイル:ここで

MyConfigSettings settings = JsonConvert.DeserializeObject<MyConfigSettings>(jsonString);

MyConfigSettingsは、構成設定クラスです。対応するメンバは、適切なget; set;属性が定義されたpublicプロパティとして宣言されなければなりません。

これは、すべての構成設定をsettingsオブジェクトにロードします。最も重要な点は、欠落している設定値が自動的にスキップされるため、複雑な解析アルゴリズムを使用する必要がないことです。

JSONファイルに設定値を書き込むには、あなたがsettingsオブジェクト内の値を移入して使用してそれらをシリアライズ可能性があります

// Indented so that it looks readable when the config file is opened in editor like Notepad 
string data = JsonConvert.SerializeObject<MyConfigSettings>(settings, Formatting.Indented); 
// Now just store string object data to the config file 

注:これは、.NET 4.0以降

を必要とします

クイックスタートはthis exampleです。

+0

この設定セクションを使用するためにすぐに使用できるソリューションを用意しているので、これはベストプラクティスとはかけ離れていると思います。 – ivowiblo

+0

私はこの解決策が気に入っていますが、ivowibloに言及したように、箱から何かを持っている方が理想的です。私はC#でプログラミングしていなければ、おそらくこれを実装すると思います。 –

関連する問題