在.Net配置部分中使用相同元素的集合

Ale*_*nik 3 .net c# collections configuration

我很感兴趣,如果可以在.Net配置中使用相同的元素集合.像这样,例如:

                <RetrySettings>
                <RetryTurn PeriodBeforeRetry="0:05:00"/>
                <RetryTurn PeriodBeforeRetry="0:10:00"/>
                <RetryTurn PeriodBeforeRetry="0:30:00"/>
                <RetryTurn PeriodBeforeRetry="1:00:00"/>
                <RetryTurn PeriodBeforeRetry="4:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
                <RetryTurn PeriodBeforeRetry="8:00:00"/>
            </RetrySettings>
Run Code Online (Sandbox Code Playgroud)

没有id="someUniqueId"为每个RetryTurn成员添加恼人的属性?

我不知道如何制作这个,使用自定义集合,派生自ConfigurationElementCollection......任何可能的解决方案?

Ale*_*nik 10

最后我找到了解决方法.在RetryTurn类中定义内部Guid属性UniqueIdGuid在默认构造函数中使用新值初始化它:

public class RetryTurnElement : ConfigurationElement
{
    public RetryTurnElement()
    {
        UniqueId = Guid.NewGuid();
    }

    internal Guid UniqueId { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

RetryTurnCollection类覆盖GetElementKey方法中,如下所示:

    public class RetryTurnCollection : ConfigurationElementCollection
{
    protected override object GetElementKey(ConfigurationElement element)
    {
        return ((RetryTurnElement)element).UniqueId;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)