C# ConfigurationElementCollection中的无键元素
继承ConfigurationElementCollection时:C# ConfigurationElementCollection中的无键元素,c#,.net,configuration,config,custom-configuration,C#,.net,Configuration,Config,Custom Configuration,继承ConfigurationElementCollection时: public class Directories : ConfigurationElementCollection { ... } ConfigurationElementCollection需要实现GetElementKey(System.Configuration.ConfigurationElement) 但我不关心密钥,因为我有一个自定义配置部分,如下所示: <directorySection>
public class Directories : ConfigurationElementCollection
{
...
}
ConfigurationElementCollection
需要实现GetElementKey(System.Configuration.ConfigurationElement)
但我不关心密钥,因为我有一个自定义配置部分,如下所示:
<directorySection>
<directories>
<directory pickUpDirectory="C:\Users\User\Documents\PickUp\0" dropOffDirectory="C:\Users\User\Documents\DropOff\0"/>
<directory pickUpDirectory="C:\Users\User\Documents\PickUp\0" dropOffDirectory="C:\Users\User\Documents\DropOff\0"/>
<directory pickUpDirectory="C:\Users\User\Documents\PickUp\1" dropOffDirectory="C:\Users\User\Documents\DropOff\1"/>
<directory pickUpDirectory="C:\Users\User\Documents\PickUp\2" dropOffDirectory="C:\Users\User\Documents\DropOff\2"/>
</directories>
</directorySection>
它可以有多个元素,每个元素都是无键的,这个结构应该允许重复(如上所述)。那么在这种情况下我应该怎么做呢?试着这样使用
[ConfigurationCollection(typeof(SchedulerTaskItem), AddItemName = "Task")]
public class SchedulerTaskCollection: ConfigurationElementCollection
{
private static readonly ObjectIDGenerator idGenerator = new ObjectIDGenerator();
protected override ConfigurationElement CreateNewElement()
{
return new SchedulerTaskItem();
}
protected override object GetElementKey(ConfigurationElement element)
{
bool firstTime;
return idGenerator.GetId(element, out firstTime);
}
}
然后不要继承
ConfigurationElementCollection
:)使用另一种方法来解析/生成xml。@L.B最初我打算沿着这条路走,但现在好像我别无选择;没有任何东西支持自定义.config节的这种开箱即用的方式?您是否尝试过只读取自定义节的应用程序配置文件,并将其反序列化为适合您需要的任何类?@Louis我想L.B.建议了这一点可能我误解了@L.B答案,我觉得它更一般。现在我读了我的,其实没什么不同。无论如何,只要知道XML结构,就根本不需要实现ConfigurationElement。例如,您可以始终使用LINQXML读取应用程序设置[“目录”]。也许我看不到你的要求?