對於WPF和C#來說,我一般都很陌生,使用app.config會令我困惑。感覺完成非常基本的任務非常困難。我只是想添加一些數據驅動設置到我的應用程序,並想使用app.config。在app.config中使用自定義節在WPF中引發異常
經過一番研究,它看起來像「appSettings」是舊的,沒有類型檢查,並且「applicationSettings」似乎已被棄用(甚至在VS 2012的標準架構中也沒有)。所以,我現在正在嘗試創建一個自定義配置部分。我基於示例編寫了一個非常簡單的例子,但在啓動期間拋出了TypeInitializationException。我正在盯着代碼,但沒有看到有什麼問題。
app.config文件:
<configSections>
<section name="applicationConfig" type="MyApp.ApplicationConfig, MyApp"/>
</configSections>
<applicationConfig
UseLocalhost="true"
WebServer="http://www.someserver.com"
MachineId="999"/>
C#代碼:
namespace MyApp
{
public class ApplicationConfig : ConfigurationSection
{
public ApplicationConfig()
{
}
public static ApplicationConfig GetConfig()
{
return (ApplicationConfig)System.Configuration.ConfigurationManager.GetSection("applicationConfig") ?? new ApplicationConfig();
}
[ConfigurationProperty("UseLocalhost", DefaultValue = false, IsRequired = false)]
public bool UseLocalhost
{
get { return (bool)this["UseLocalhost"]; }
set { this["UseLocalhost"] = value; }
}
[ConfigurationProperty("WebServer", IsRequired = true)]
public string WebServer
{
get { return (string)this["WebServer"]; }
set { this["WebServer"] = value; }
}
[ConfigurationProperty("MachineId", DefaultValue = 999, IsRequired = false)]
public int MachineId
{
get { return (int)this["MachineId"]; }
set { this["MachineId"] = value; }
}
}
}
感謝您的幫助。
感謝您的回答。我目前懷疑這是因爲xsd模式檢查。構建成功,但有一個警告,它不瞭解我的自定義屬性。我在VS中使用了「創建模式」工具,但這導致了另一個問題,它抱怨說「配置」被定義了兩次。可能曾經在一個默認模式中。此時,我正在使用「appSettings」和ConfigurationManager.AppSettings。這不是理想的,但現在工作。 – user2203032 2013-03-24 05:43:36
不要這麼想......我把你的代碼和配置xml粘貼到我的項目中,它工作 - 沒有例外。它必須是別的東西,可能是你調用GetConfig()的部分,甚至是與你的代碼段無關的代碼。 – Volma 2013-03-25 03:19:53