私は次のようなコードを持っています:
var mySetting = ConfigurationManager.AppSettings["mySetting"];
「mySetting」のような文字列キーを使用する必要がないように、各設定をカプセル化するプロパティを作成する方法はありますか? 「カスタム構成セクション」を作成することでそれができることは知っていますが、別のセクションを作成したくありません... 既存の <appSettings> セクションを使用したいです。
私は次のようなコードを持っています:
var mySetting = ConfigurationManager.AppSettings["mySetting"];
「mySetting」のような文字列キーを使用する必要がないように、各設定をカプセル化するプロパティを作成する方法はありますか? 「カスタム構成セクション」を作成することでそれができることは知っていますが、別のセクションを作成したくありません... 既存の <appSettings> セクションを使用したいです。
別のオプションは、アプリケーション設定を取得するために使用できる別のインターフェイスを作成することです
public interface IFooSettings
{
int MySettings{get;}
}
public class ApplicationSettings : IFooSettings
{
public string MySettings{get; private set;}
ApplicationSettings()
{
MySettings = ConfigurationManager.AppSettings["mySetting"];
}
}
これの威力は、何らかの理由で構成をデータベースに保存し始めたい場合に、データベースを使用するために IFooSettings からクラスを派生させるだけでよいことです。
public class SqlApplicationSettings : IFooSettings
{
SqlApplicationSettings()
{
//Do Something to populate the settings
}
public string MySettings{get; private set;}
}
確かに、これはアプリケーションにとってはやり過ぎかもしれませんが、ConfigurationManager やその他のソースに縛られないため、多くの柔軟性が得られます。
はい - Visual Studio が提供する「設定」クラスを使用します - 「新しい項目の追加」を使用し、「設定」を選択します。
これにより、厳密に型指定されたプロパティ (string、int など) とすべてを持つクラスが得られます。
これにより、カスタム構成セクションの app.config に必要なエントリが追加されますが、実際にはすべて既に提供されているので、車輪を再発明する必要はありません。
マルク
http://www.codeproject.com/KB/cs/genuilder.aspxを使用すると、ASP.NETプロジェクトでこれを実行できます。
Visual Studio でグラフィカルにこれを行うことができるConfiguration Section Designerを確認してください。