0

当您继承 ConfigurationElementCollection 时:

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>

它可以有多个元素,并且每个元素都是无键的,并且这种结构应该允许重复(如上所述)。那么在这种情况下我应该怎么做呢?

4

1 回答 1

2

尝试像这样使用ObjectIDGenerator

[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);
    }
}
于 2018-07-07T15:30:30.890 回答