TimeSpan дней в конфигурации?
Похоже, что ConfigurationElement
of TimeSpan
не может обрабатывать значения, превышающие 23:59:59. Есть ли обходные пути? Подклассификация TimeSpan
и создание нового TimeSpanValidatorAttribute
даже для работы? Мне нужно обрабатывать временные интервалы от нескольких минут до нескольких дней.
Я использую следующий раздел конфигурации
[ConfigurationProperty("SequenceRolloverDOSCompare", IsRequired = true)]
[TimeSpanValidator(MinValueString = "0:0:00", MaxValueString = 10675199.02:48:05.4775807", ExcludeRange = false)]
public TimeSpan SequenceRolloverDOSCompare
{
get
{
return (TimeSpan)base["SequenceRolloverDOSCompare"];
}
}
с конфигурацией, выглядящей так:
<SequenceRolloverPolling SequenceRolloverDOSCompare="2:00:00:00" />
дает ConfigurationErrorsException : The value of the property 'SequenceRolloverDOSCompare' cannot be parsed. The error is: 2:00:00:00 is not a valid value for TimeSpan.
или это:
<SequenceRolloverPolling SequenceRolloverDOSCompare="48:00:00" />
дает OverflowException : The TimeSpan could not be parsed because at least one of the hours, minutes, or seconds components is outside its valid range
Ответы
Ответ 1
Используйте разделитель .
между днями и часами:
<SequenceRolloverPolling
SequenceRolloverDOSCompare="2.00:00:00" />
Формат TimeSpan определяется как:
... [-] d.hh: mm: ss.ff, где необязательный знак минус указывает отрицательный интервал времени, d-компонент - дни, hh - часы, измеренные на 24-часовом часе, мм минуты, ss - секунды, а ff - доли секунды.