2016-09-13 5 views
0

私は、ユーザー設定ファイルの何らかの形式を参照する必要があるコマンドラインアプリケーションを持っているとしましょう。さらに、このファイルに含まれている値は、ユーザーが手動で更新するだけです。アプリケーション内の構成ファイルを更新する方法はなく、アプリケーションは開始された入力を探すこともありません。構成リストに構成リストがない場合は、代わりにデフォルト値を使用する必要があります。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; 
      }     
     } 
    } 
} 

その後、私の書く能力を与える:現在、私は離れて抽象化するクラス構成管理/設定用のものを作成しました

私が上で述べた問題にアプローチするきれいな方法のように思えます。どんな助けでも大歓迎です!

+0

Iをクラスの代わりにジェネリックヘルパー関数を使用してください。そうでなければ、あなたのコードは私にとっては良いようです。 – BradleyDotNET

+0

なぜこれは "問題に近づくためのきれいな方法"ではありませんか?どうしたの?基本的には、設定リポジトリを抽象化することによって、多くの優れたアプリケーションデザイナーがやっていることをやっています。ビジネスコードが必要とするのは、AppSettingsを呼び出して値を取得することです。アプリケーションの残りの部分に影響を与えることなく、レジストリやデータベースなどの基本設定のソースを自由に変更することができます。しかしあなたの*特定の懸念を知らないと、私はあなたが本当に求めているものを知ることができません。 –

+0

[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

答えて

0

独自のアプリケーション設定ラッパーをコーディングする代わりに、Visual Studioに組み込まれている機能を再利用して、このラッパーを生成できます。 How to: Add or Remove Application SettingsおよびHow To: Read Settings at Run Time With C#を参照してください。設定の種類を指定するほかに、スコープ(ユーザーまたはアプリケーション)を指定することもできます。

前述の記事の手順に続いて、それはあなたのApp.configファイルに設定を追加します、下の例である:

<configuration> 
... 
    <applicationSettings> 
     <ConsoleApplication1.Properties.Settings> 
      <setting name="TestKey" serializeAs="String"> 
       <value>TestValue</value> 
      </setting> 
     </ConsoleApplication1.Properties.Settings> 
    </applicationSettings> 
... 
</configuration> 

、次のように、あなたはこれらの設定にアクセスすることができます

string s = Properties.Settings.Default.TestKey; 
関連する問題