對於* .config文件,我的規則是當我希望在不重新部署二進制文件的情況下更改設置的能力時使用它們。如果我不在乎要求部署進行更改,那麼我會使用常量。如果我有疑問,我會使用配置文件。我差不多總是使用配置文件。
當我做使用* .config的東西,我會公開這些值通過另一個「配置」類,有一個靜態只讀屬性爲我希望公開的每個值。也就是說,如果我的應用程序配置有一個設置
<add key="ServerLoadTime" value="-30" />
然後我的配置類可能看起來像:
public static class Configuration
{
/// <summary>
/// Get the number of minutes before prior to the event that the server is started.
/// </summary>
public static int ServerLoadTime
{
get
{
if (ConfigurationManager.AppSettings["ServerLoadTime"] != null)
return int.Parse(ConfigurationManager.AppSettings["ServerLoadTime"]);
Logging.Write("ServerLoadTime is missing from the Configuration file.", EventLogEntryType.Warning, Logging.Sources.General, "Configuration.ServerLoadTime", null);
return -30; // return a default value.
}
}
}
這種方法創建一個標準化的封裝,可提供:
- 一種快速引用值的方法,無需通過CM和檢查有效性。
- 表面處理配置不當的值/缺失值。
- 將來自配置文件的字符串轉換爲所需類型的地方。
- 一個地方記錄缺失值,同時仍然提供默認的最後手段。
- 需要時將邏輯附加到結果的地方。
謝謝,但我從來不會建議將這些值硬編碼到程序 - 選擇是在App.Config和(說)我自己的自定義Settings.xml – 2013-02-19 23:09:59
app.config是一個XML文件的傢伙。您的解決方案只是重新發明輪子,並且不會將app.config暴露給最終用戶,我唯一可能想到的方式是通過文件系統或某種緩衝區溢出來訪問它。即使如此,在某些情況下,你不能相信你的同伴,特別是你。在更大的組織,所以使用MS提供的工具配置混淆我相信:http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config -file.aspx。我也知道將加密值存儲在數據庫中。 – RandomUs1r 2013-02-19 23:34:09
App.config實際上暴露給用戶,形式爲 .exe.config - 這就是它的全部要點,所以可以編輯設置。 –
2013-02-20 22:07:29