*.config ファイルに対する私のルールは、バイナリを再デプロイせずに設定を変更できるようにしたい場合に使用することです。変更を行うために配置を要求することを気にしない場合は、定数を使用します。確信が持てない場合は、構成ファイルを使用します。ほとんどの場合、構成ファイルを使用します。
何かに *.config を使用するときは、公開したい値ごとに 1 つの静的な読み取り専用プロパティを持つ別の「構成」クラスを介してそれらの値を公開します。つまり、私のアプリ構成に設定がある場合
<add key="ServerLoadTime" value="-30" />
次に、構成クラスは次のようになります。
public static class Configuration
{
/// <summary>
/// Get the number of minutes before prior to the event that the server is started.
/// </summary>
public static int ServerLoadTime
{
get
{
if (ConfigurationManager.AppSettings["ServerLoadTime"] != null)
return int.Parse(ConfigurationManager.AppSettings["ServerLoadTime"]);
Logging.Write("ServerLoadTime is missing from the Configuration file.", EventLogEntryType.Warning, Logging.Sources.General, "Configuration.ServerLoadTime", null);
return -30; // return a default value.
}
}
}
このアプローチにより、以下を提供する標準化されたカプセル化が作成されます。
- CM を使用して有効性を確認することなく、値を参照する簡単な方法。
- 不適切に構成された値/欠損値を処理するためのサーフェス。
- 構成ファイルからの文字列を必要な型にキャストする場所。
- デフォルトの最後の手段を提供しながら、欠落している値をログに記録する場所。
- 必要に応じて結果にロジックを付けるための対処場所。