2

C# アプリケーションによって読み取られるだけでなく更新される設定/設定/構成を保持する方法に苦労しています。私の構成は

  • 個々の int、文字列、接続文字列を表す byte[]、ディレクトリ名、ファイル名など
  • 文字列またはその他の値の型のコレクション。

  • 主に値型のグループを表すクラス オブジェクト インスタンス。

-> そのような設定は、異なる、場合によっては無関係なクラスでアクセスされます。

私は現在、次の箇条書きを考慮して、あなたがベストプラクティスだと思うものを熟考しています:

  • 自己記述キー/値ストア。内部的にキー/値はハッシュテーブルに格納され、ハッシュテーブルは永続化のためにシリアライズ/デシリアライズされます。

  • エンティティ フレームワーク: MS エンティティ フレームワークにアクセスして、MySQL サーバー インスタンスを実行しています。

  • テキストファイル・XMLファイル

  • 他の/より良いアイデアはありますか?

除外:

  • Settings.settings や App.config などに設定を保存したくない

  • レジストリを使用したくない

  • あいまいなローミング ディレクトリ構造やその他の隠しディレクトリに設定を保存したくありません。設定は、専用のデータベース/テーブルに保存するか、アプリケーションの実行可能フォルダーまたはサブフォルダーに保存する必要があります。

質問:

  • すべての構成オブジェクトを 1 つの同じエンティティに格納するかどうか、または構成のグループを格納するためにそのようなエンティティをいくつかセットアップする必要があるかどうかがわかりません。
  • 設定/構成として機能し、後でそれらをロードしてアクセスするような軽量オブジェクトを永続化する最良の方法は何ですか?
4

2 に答える 2

0

設定を WMI 名前空間に保存できます。製品固有の設定と構成の 1 つをそこに保存しました。また、App.config を除外しましたが、アプリケーション固有の設定は通常そこに保存されます。

于 2013-01-11T05:22:25.820 に答える
0

このタイプのシナリオには XML を使用することをお勧めします。

  • 書きやすいし読みやすい

  • 人間が判読可能で、手動で開いて編集するのが簡単

  • LINQ to XML を使用すると、特定のデータに対してクエリを実行し、そのデータを厳密に型指定されたオブジェクトに変換できます。

  • 特に構成ファイルで広く使用され、理解されています

  • 柔軟な構造

これらは頭に浮かぶほんのいくつかのことです。タイプ tcp のすべてのプロトコルについてファイルを照会するコードの例を次に示します。

XElement settings = XElement.Load("settings.xml");
IEnumerable<XElement> tcpSettings = settings.Elements("protocol").Where(o => o.Attribute("name").Value == "tcp")
// make some changes to the settings
settings.Save("settings.xml");

編集:

Dictionary メンバーを含むクラスをシリアライズする

于 2013-01-11T06:09:47.050 に答える