2

ストアド プロシージャ名、ユーザー メッセージなど、アプリケーション レベルで使用したい定数がいくつかあります。これらのリソースを変更する可能性はほとんどありません。

アプリケーションで定数を保持するための良い方法を教えてください。

.cs ファイルよりもリソース ディクショナリの方が望ましいです。

よろしくAA

4

1 に答える 1

3

まず第一に、あなたはこのことについて考えるのが正しい軌道に乗っています。魔法の文字列やその他の魔法の値は、多くの理由で良くありません。

以下に、私たちが使用するガイドラインをいくつか示します。

  1. 定数は、REAL-WORLD 定数のものに対してのみ許可されます。「私のボニーは {0} の上に横たわっています」をフォーマット文字列として使用する必要がある場合は、そのために RESOURCE を使用します。
  2. 変化する可能性があるものは、常に一定ではありません。このようなものにはいくつかのオプションがあります。
  3. ロジックの一部でない場合、ソース コードには含まれません。これは、次の外部の場所のいずれかに配置され、ソース コードで参照されるため、変更を加えるために再コンパイルする必要はありません。

通常、必要に応じてアセンブリごとに 3 つのファイルがあります。まず、定数ファイルです。これは通常、Constants.cs と同じくらい簡単です。このファイルに定数 (およびコンパイル時の定数ではなく変更されない読み取り専用の静的変数) を入れます。構成可能なものを含めることもできますが、デフォルト値が必要です。

internal class Constants
{
    public const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Error;

    public static readonly string APP_NAME = Configuration.ApplicationName ?? "Test Application";
}

2 つ目は、構成値を読み取り、それらを静的な値として返すファイルです。これは通常 Configuration.cs であり、すべての構成値を返す役割を果たします。これにより、接続文字列を変更したり、設定を処理したりするために再コンパイルする必要がなくなります。実際の値は、.ini ファイル、web.config または app.config、データベース テーブル、またはソース コード外のその他の場所などに存在します。次の例では、ConfigurationManager.AppSettings["ApplicationName"] をコード全体に塗りつぶすことができますが、その appsetting のキーを変更したい場合はどうすればよいでしょうか? それへのすべての参照の名前を変更する必要があります。このようなことを行うのに余分な 30 秒をかけてください。すべての Configuration.ApplicationName.

internal class Configuration
{
    public static string ApplicationName
    {
        get
        {
            return ConfigurationManager.AppSettings["ApplicationName"];
        }
    }
}

最後に、1 つ以上のリソース ファイルです。ここには、アイコン、画像、変わったフォント、ローカライズされた (または単に変更可能な) 文字列などを表示目的で配置します...

これを行う具体的な正しい方法はありませんが、上記が出発点になると思います。

于 2012-09-21T16:00:40.360 に答える