TimeSpan дней в конфигурации? - PullRequest
17 голосов
/ 30 июня 2010

Похоже, что ConfigurationElement из 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 Ответ

26 голосов
/ 30 июня 2010

Используйте разделитель . между днями и часами:

<SequenceRolloverPolling
    SequenceRolloverDOSCompare="2.00:00:00" />

Формат TimeSpan определяется как:

... [-] d.hh: mm: ss.ff, где необязательный знак минус указывает отрицательный интервал времени, компонент d - дни, hh - часы, измеренные на 24-часовых часах, мм - минуты, сс - секунды, а ff - доли секунды.

...