我创建了我的第一个自定义配置部分,一切顺利。然后我去延长它,它横着走。我遇到并且找不到很多示例的问题是,在我的部分中,我想要有 2 种不同类型的集合。两个集合中的元素完全不同,但每个集合中的元素相同。当我收到错误时,我无法让配置部分返回正确的集合。我可以作弊并创建 2 个部分,但这似乎不是实现这一点的正确方法。
好的一些代码
<configSections>
<section name="MyFileSection" type="My.ConfigManager.MyFileListConfiguration, MyConfigManager" />
</configSections>
<MyFileSection>
<MyDirectoryRootCollection>
<add rootName="MyDataLocation" rootLocation="\\MyServer\MyDirectory"/>
<add rootName="YourDataLocation" rootLocation="\\YourServer\YourDirectory"/>
</MyDirectoryRootCollection>
<MyFileListCollection>
<add keyName="MyFile1" copyType="File" sourceFileName="TestFile1" />
<add keyName="MyFile2" copyType="FTP" sourceFileName="TestFile2" />
<add keyName="MyFile3" copyType="File" sourceFileName="TestFile3" />
</MyFileListCollection>
</MyFileSection>
所以在 MyFileSection 中,我有 2 个集合... MyDirectoryRootCollection 和 MyFileListCollection。我认为一个 Config 类会让我像这样得到其中的 2 个。
namespace My.ConfigManager
{
public class MyFileListConfiguration : ConfigurationSection
{
private static string sMyFileListCollectionConst = "MyFileListCollection";
private static string sMyDirectoryRootCollectionConst = "MyDirectoryRootCollection";
[ConfigurationProperty("MyFileListCollection", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(MyFileListConfigEleCollection), AddItemName = "MyFileListCollection")]
public MyFileListConfigEleCollection MyFileListCollection
{
get { return ((MyFileListConfigEleCollection)(base["MyFileListCollection"])); }
}
[ConfigurationProperty("MyDirectoryRootCollection", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(MyDirectoryRootConfigEleCollection), AddItemName = "MyFileListCollection")]
public MyFileListConfiguration MyDirectoryRoot
{
get { return ((MyFileListConfiguration)(base["MyDirectoryRootCollection"])); }
}
}
我尝试通过此调用获取配置部分
MyFileListConfiguration fileListSection = (MyFileListConfiguration)ConfigurationManager.GetSection("MyFileSection");
但我得到这个错误 -
System.Configuration.ConfigurationErrorsException 未处理
Message="配置属性 'MyDirectoryRootCollection' 可能不是从 ConfigurationSection 派生的。"
有没有人知道我做错了什么,是否有可能在一个部分中有 2 个完全不同的集合?