2010-06-30 4 views
14

Похоже, что ConfigurationElement из TimeSpan не может обрабатывать значения, превышающие 23:59:59. Есть ли обходные пути? Подклассификация TimeSpan, и создание нового TimeSpanValidatorAttribute даже собирается работать? Мне нужно обрабатывать временные интервалы от нескольких минут до нескольких дней.TimeSpan дней в конфигурации?

Я использую следующий раздел

[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

ответ

22

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

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

В TimeSpan format определяется как:

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

+2

мои глаза должны были глазироваться – BozoJoe