5

アプリケーション全体でデータにアクセスできるようにする最善の方法は何ですか? 私の具体的な例では、アプリケーションの設定を XML ファイルから Settings-Object のインスタンスに読み込みます。ユーザーがこれらを変更できる (そしてその効果を確認できる) 必要があるため、これらの絶対定数をいくつか作成したくありません。 ) プログラムを再起動せずに。

ここで、他のクラスのメソッドで特定の (のプロパティ) 設定を使用する必要がありますが、この方法ではアクセスできません。では、どの種類の「オブジェクト」に設定を保存する必要がありますか? アプリケーション全体で設定が必要な各メソッドが XML 自体を調べなければならないのは良くないと思います。また、私が使用する他のすべてのクラスに設定インスタンスを渡すのは面倒です。

前もって感謝します!

4

4 に答える 4

9

C# では、この機能を提供するために常に静的クラスを使用します。静的クラスについてはこちらで詳しく説明していますが、簡単に説明すると、静的メンバーのみが含まれ、インスタンス化されません。基本的に、それらはクラス名 (および名前空間) を介してアクセスされるグローバル関数と変数です。

簡単な例を次に示します。

public static class Globals
{
    public static string Name { get; set; }
    public static int aNumber {get; set; }
    public static List<string> onlineMembers = new List<string>();

     static Globals()
     {
        Name = "starting name";
        aNumber = 5;
     }
}

メンバーまたは関数が使用/呼び出される前のある時点で実行されることが保証されている静的初期化子も使用していることに注意してください。

プログラムの他の場所では、次のように簡単に言うことができます。

Console.WriteLine(Globals.Name);
Globals.onlineMembers.Add("Hogan");

コメントに応じて言い直すと、静的オブジェクトは一度だけ「作成」されます。したがって、アプリケーションがオブジェクトを使用する場所はどこでも同じ場所になります。それらは定義上グローバルです。このオブジェクトを複数の場所で使用するには、オブジェクト名とアクセスしたい要素を参照するだけです。

于 2012-08-02T15:49:50.810 に答える
3

Configurationいくつかの単純な(たとえば) クラスを定義します。

public static class Configuration 
{
     /*runtime properties */

    public static void LoadConfiguration(..)
    {
       /*Load from file a configuration into the static properties of the class*/
    }


    public static bool SaveConfiguration(...)
    {
       /*Save static properties of the class into the configuration file*/
    }
}

何らかの理由で構成ファイルが失われた場合に備えて、デフォルトの構成を忘れないでください。

お役に立てれば。

于 2012-08-02T15:47:12.320 に答える
0

取得および設定する静的プロパティを持つ静的クラスを持つことができます

于 2012-08-02T16:00:22.360 に答える
0

設定プロジェクト ページの完璧な使い方のように思えます。デフォルトを設定すると、アプリケーションの実行間で変更および保存できます。

于 2012-08-02T16:00:01.647 に答える