[英]How to load the configuration on application startup?
我創建了一個配置文件App.config,其中包含與我的應用程序有關的所有操作參數。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="MinConnectionCount" value="2"/>
<add key="MaxConnectionCount" value="7"/>
</appSettings>
</configuration>
為了讀取這些值並使它們可用於整個應用程序,只需使用ConfigurationManager
類的AppSettings
屬性,如下所示:
try
{
NameValueCollection myAppSettings = ConfigurationManager.AppSettings;
byte min = byte.Parse(myAppSettings["MinConnectionCount"]);
byte max = byte.Parse(myAppSettings["MaxConnectionCount"]);
}
catch (ConfigurationErrorsException e)
{
throw e;
}
AppSettings
屬性讀取的值是字符串類型,因此您必須執行必要的轉換並檢查:
為了實現這些目標,我創建了一個類,該類從文件加載配置,並通過適當的屬性提供轉換后的參數。
public class MyConfiguration
{
enum Errors
{
CONNECTION_RANGES_ERROR
// some other errors
}
private byte m_MinConnectionCount;
private byte m_MaxConnectionCount;
private readonly List<Errors> m_ConfigErrors = new List<Errors>();
public MyConfiguration()
{
try
{
NameValueCollection appSettings = ConfigurationManager.AppSettings;
if (!SetConnectionRanges(appSettings["MinConnectionCount"], appSettings["MaxConnectionCount"]))
m_ConfigErrors.Add(Errors.CONNECTION_RANGES_ERROR);
// ...
}
catch (ConfigurationErrorsException e)
{
throw e;
}
}
private bool SetConnectionRanges(string minCountStr, string maxCountStr)
{
if (byte.TryParse(minCountStr, out m_MinConnectionCount)
&& m_MinConnectionCount > 0
&& byte.TryParse(maxCountStr, out m_MaxConnectionCount)
&& m_MaxConnectionCount > m_MinConnectionCount)
return true;
m_MinConnectionCount = 2;
m_MaxConnectionCount = 7;
return false;
}
public byte MinConnectionCount { get { return m_MinConnectionCount; } }
public byte MaxConnectionCount { get { return m_MaxConnectionCount; } }
public List<Errors> GetErrors() { return m_ConfigErrors; }
}
GetErrors()
方法允許獲取加載配置參數期間發生的錯誤列表:可能會通知用戶這些錯誤,並且可能會通知用戶應用程序已使用參數的默認值。
Instance
屬性作為Main
方法的第一條語句。 但是我應該在WPF應用程序中的哪里調用Instance
屬性? MyConfiguration
類創建一個全局變量,並調用GetErrors()
方法作為Main
方法的第一條語句。 但是我應該在WPF應用程序中的哪里調用GetErrors()
方法? 將您的類更改為static
以確保它的單個實例。
然后,您可以在顯示並報告錯誤的第一個表單的Load
事件中調用MyConfiguration.GetErrors()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.