2009-10-19 72 views
0

我有這樣的代碼:在類中封裝AppSettings?

var mySetting = ConfigurationManager.AppSettings["mySetting"]; 

有沒有一種方法來創建屬性封裝每個設置,所以我沒有使用字符串鍵,如「mySetting」?我知道你可以通過創建一個「自定義配置部分」來實現,但我不想再創建另一個部分...我想使用現有的<appSettings>部分。

回答

2

是的 - 使用Visual Studio提供的「設置」類 - 使用「添加新項目」,然後選擇「設置」。

這給你一個具有強類型屬性(字符串,int等)和所有的類。

這將在自定義配置部分的app.config中添加它需要的條目 - 但它已經全部爲您提供了,那麼爲什麼要重新發明輪子?

馬克

+0

這種方法將工作非常適合某些種類的項目(例如WPF應用程序,類庫等),但它不會對所有項目類型的工作。例如,「設置文件」不是Web應用程序的新建項目選項。雖然答案很好。 – 2009-10-19 23:06:07

+0

@Brian:是的,我同意 - 它不是解決所有問題的方法,但是當它可用時,我會使用它 - 不要一直改造一切! :..... – 2009-10-20 04:39:41

3

另一種選擇是創建一個單獨的界面,你可以用它來檢索應用程序設置

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或其他來源。