2013-03-22 102 views
0

我遇到了從自定義配置節加載的問題。加載自定義配置節問題

問題部分是什麼。我有兩個元素(第一個和第二個),我已經在choice元素中的XSD模式下定義了。用戶在配置時只能選擇一個。讓我們說這樣的事情:

<customSection> 
    <First attribute ="test" />  
</customSection> 

<customSection> 
    <Second attribute ="test" attribute2 ="np" /> 
</customSection> 

當我加載配置,在這兩種情況下配置元素第一次和第二次將被加載,他們不會爲空(對象爲空) 。 如何在第一種情況下完成第二個對象爲空?

謝謝

+0

具體是什麼問題呢?你有什麼嘗試? – 2013-03-22 17:29:05

+0

在每個實例的第一種情況下,我將加載代碼CustomSection對象和第一個對象(作爲一個屬性)與子屬性和第二個對象(作爲屬性)將不會爲空。它將用空屬性初始化。我期待第二個對象爲null。那就是我想要完成 – Rastko 2013-03-25 12:46:28

回答

0

我發現我需要的東西。每個配置元素具有屬性ElementInformation(http://msdn.microsoft.com/en-us/library/system.configuration.elementinformation.aspx),其中還存在屬性IsPresent,其指示特定配置元素是否存在於配置文件中。官方說明:

IsPresent:獲取一個值,該值指示關聯的ConfigurationElement對象是否在配置文件中。

有了這個,我可以跟蹤哪些元素被加載,哪些不是。以前我不能說是等於或不等於null。它不會獨立於null,而且它具有值。

2

首先創建類映射

public class YourCustomConfig : ConfigurationSection 
{ 
.... 
} 

全樣本這裏:http://nnish.com/2009/09/17/custom-configuration-section-in-c/

其次,你讓你的DATAS

YourCustomConfig section = ConfigurationManager.GetSection("customSection") as YourCustomConfig; 
+0

是的弗雷德裏克,我知道。我已經定義了一切。問題在於YourCustomConfig在你的情況下會初始化所有的複雜對象(它的屬性),而不管這些對象是否在配置文件中定義。對我而言,預期的行爲是將這些對象設置爲空,而不是空初始化。 – Rastko 2013-03-25 19:05:21