我有這樣的代碼:在類中封裝AppSettings?
var mySetting = ConfigurationManager.AppSettings["mySetting"];
有沒有一種方法來創建屬性封裝每個設置,所以我沒有使用字符串鍵,如「mySetting」?我知道你可以通過創建一個「自定義配置部分」來實現,但我不想再創建另一個部分...我想使用現有的<appSettings>部分。
我有這樣的代碼:在類中封裝AppSettings?
var mySetting = ConfigurationManager.AppSettings["mySetting"];
有沒有一種方法來創建屬性封裝每個設置,所以我沒有使用字符串鍵,如「mySetting」?我知道你可以通過創建一個「自定義配置部分」來實現,但我不想再創建另一個部分...我想使用現有的<appSettings>部分。
是的 - 使用Visual Studio提供的「設置」類 - 使用「添加新項目」,然後選擇「設置」。
這給你一個具有強類型屬性(字符串,int等)和所有的類。
這將在自定義配置部分的app.config中添加它需要的條目 - 但它已經全部爲您提供了,那麼爲什麼要重新發明輪子?
馬克
另一種選擇是創建一個單獨的界面,你可以用它來檢索應用程序設置
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;}
}
誠然,這可能b對你的應用程序有點矯枉過正,但它會提供很大的靈活性,因爲你不會綁定到ConfigurationManager或其他來源。
檢出Configuration Section Designer這將允許您在Visual Studio中以圖形方式執行此操作。
http://www.codeproject.com/KB/cs/genuilder.aspx將允許你這樣做在ASP.NET項目
這種方法將工作非常適合某些種類的項目(例如WPF應用程序,類庫等),但它不會對所有項目類型的工作。例如,「設置文件」不是Web應用程序的新建項目選項。雖然答案很好。 – 2009-10-19 23:06:07
@Brian:是的,我同意 - 它不是解決所有問題的方法,但是當它可用時,我會使用它 - 不要一直改造一切! :..... – 2009-10-20 04:39:41