web-dev-qa-db-ja.com

App.configを使用して厳密に型指定された変数を設定する

私は.NET 3.5を実行しているC#初心者です。サーバーの環境(開発、ステージング、本番など)によって設定が異なる可能性があるため、一連のアプリケーションのデフォルト値をApp.configに保存します。私がやりたいことは このStackOverflowの記事 ですが、文字列以外の値(たとえば、int、bool)も使用できるようにしたいです。次のようなもの(名前と値は単なる例です)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <applicationSettings>
        <MyApp>
            <setting name="InitText" serializeAs="String">
                <value>Hello</value>
            </setting>
            <setting name="StartAt" serializeAs="Integer">
                <value>5</value>
            </setting>
            <setting name="IsWeekend" serializeAs="Boolean">
                <value>True</value>
            </setting>
        </MyApp>
    </applicationSettings>
</configuration>

誰かがこれを行う方法の例、およびC#を介して値を取得する方法の例を提供できますか? andの使用を必要とする多くの例を見てきましたが、それらの要素が必要かどうか、必要な場合はどのように作成するかわかりません。

21
Mass Dot Net

.NET Frameworkの アプリケーション設定アーキテクチャ の使用についてはどうでしょうか。デフォルト値への強く型付けされたアクセスを持つことができます。

Windowsアプリケーションプロジェクトでは、設定ファイルはResourcesフォルダーに自動的に作成されます。次に、質問で示したように、App.configファイルに保持されているアプリケーション設定を追加できます。

例えば:

int i = Settings.Default.IntSetting;

bool b = Settings.Default.BoolSetting;

編集:プロジェクトに設定ファイルが含まれていない場合は、新しい項目を追加してから設定ファイルを選択することで、いつでも追加できます。 (プロジェクトファイルを右クリックして、[追加]-> [新しい項目]-> [設定ファイル]をクリックします)。私の場合は「設定」という名前を付けましたが、好きな名前を付けることができます。

ファイルを追加した後、visual studioは設定デザイナーを開き、厳密に型指定された設定を追加できます。あなたが言ったことから、ユーザーではなくアプリケーションスコープで設定を設定する必要があります。次にプロジェクトをビルドすると、ファイルの名前を持つクラスにアクセスできるはずです。

32
João Angelo
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"])
24
JayG

JayGが提案したことは、Visual Studioによって自動的に行うことができます。 appsettingsウィザードを使用します MSDNで説明されているように 。また、全体の アプリケーション設定 インフラストラクチャは一見の価値があります。

2
tobsen

あなたがカスタムをしたいように聞こえます<configSection>。基本的には、次のように機能します。

-適切なデフォルト値などを持つ構成クラスを作成し、Nice継承構造をセットアップして、web.config設定に基づいて自動ロードされるようにします。 -設定セクションをweb.configに追加し、設定を読み込む「タイプ」を指定して、.NETフレームワークが初期化する内容を認識できるようにします。

MSDNライブラリ であらゆる種類の情報を見つけることができます。例はasp.netですが、アプリの設定でも問題なく機能します。

0
jvenema