私は、ユーザー設定ファイルの何らかの形式を参照する必要があるコマンドラインアプリケーションを持っているとしましょう。さらに、このファイルに含まれている値は、ユーザーが手動で更新するだけです。アプリケーション内の構成ファイルを更新する方法はなく、アプリケーションは開始された入力を探すこともありません。構成リストに構成リストがない場合は、代わりにデフォルト値を使用する必要があります。C#アプリケーションのカスタムユーザー設定
Visual Studio/.NET Frameworkでは、このような構成(つまり、設定とApp.configs)を作成するためのツールが提供されていますが、正しく使用しているかどうかはわかりません。すべて。
設定ファイルを作成し、いくつかのデフォルト設定を適用しました(例:SomeBooleanFlagはデフォルト値が「False」のboolです)。この追加されたコースは私のApp.config内に反映されました。しかし、ここでジレンマがどこにあるのですか?App.configからどのように読みますか?しかし、これにはない
if (AppSettings.SomeBooleanFlag)
{
/* Do Something... */
}
:
class AppSettings
{
public static bool SomeBooleanFlag
{
get
{
try
{
string rawValue = ConfigurationManager.AppSettings["SomeBooleanFlag"];
bool userSetSomeBooleanFlag;
bool userValueParsed = bool.TryParse(rawValue, out userSetSomeBooleanFlag);
return (userValueParsed) ? userSetSomeBooleanFlag : Settings.Default.SomeBooleanFlag;
}
catch
{
return Settings.Default.SomeBooleanFlag;
}
}
}
}
その後、私の書く能力を与える:現在、私は離れて抽象化するクラス構成管理/設定用のものを作成しました
私が上で述べた問題にアプローチするきれいな方法のように思えます。どんな助けでも大歓迎です!
Iをクラスの代わりにジェネリックヘルパー関数を使用してください。そうでなければ、あなたのコードは私にとっては良いようです。 – BradleyDotNET
なぜこれは "問題に近づくためのきれいな方法"ではありませんか?どうしたの?基本的には、設定リポジトリを抽象化することによって、多くの優れたアプリケーションデザイナーがやっていることをやっています。ビジネスコードが必要とするのは、AppSettingsを呼び出して値を取得することです。アプリケーションの残りの部分に影響を与えることなく、レジストリやデータベースなどの基本設定のソースを自由に変更することができます。しかしあなたの*特定の懸念を知らないと、私はあなたが本当に求めているものを知ることができません。 –
[appSettingsファイル属性](https://msdn.microsoft.com/en-us/library/system.configuration.appsettingssection.file(v = vs.110).aspx)を使用して[別の設定デフォルト設定を上書きするファイル](http://stackoverflow.com/questions/27691636/write-appsettings-in-external-file)を参照してください。 – Jasen