我感兴趣,如果可以在.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>
不向每个id="someUniqueId"
成员添加恼人的RetryTurn
属性?
我没有看到如何使用从ConfigurationElementCollection
派生的自定义集合来实现这一目标...任何可能的解决方案?
答案 0 :(得分:10)
最后我找到了解决方法。
在RetryTurn
类中定义内部Guid
属性UniqueId
,并使用默认构造函数中的新Guid
值对其进行初始化:
public class RetryTurnElement : ConfigurationElement
{
public RetryTurnElement()
{
UniqueId = Guid.NewGuid();
}
internal Guid UniqueId { get; set; }
...
}
在RetryTurnCollection
类覆盖GetElementKey
方法中,如下所示:
public class RetryTurnCollection : ConfigurationElementCollection
{
protected override object GetElementKey(ConfigurationElement element)
{
return ((RetryTurnElement)element).UniqueId;
}
...
}
答案 1 :(得分:4)
你试过吗
public class RetryTurnCollection : ConfigurationElementCollection
{
protected override object GetElementKey(ConfigurationElement element)
{
return element;
}
...
}
答案 2 :(得分:0)
您无法使用PeriodBeforeRetry
属性作为唯一标识符吗? GetElementKey()
会返回object
,因此这不应该是个问题。
除非我误解了这个问题。