2010-06-30 9 views
14

Parece que ConfigurationElement de TimeSpan no puede manejar valores mayores que 23:59:59. ¿Hay alguna solución? ¿Está subclasificando TimeSpan y haciendo que un nuevo TimeSpanValidatorAttribute funcione? Necesito manejar plazos de algunos minutos a algunos días.TimeSpan de días en la configuración?

estoy usando la sección de configuración siguiente

[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"]; 
    } 
} 

con config con este aspecto:

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

da ConfigurationErrorsException : The value of the property 'SequenceRolloverDOSCompare' cannot be parsed. The error is: 2:00:00:00 is not a valid value for TimeSpan.

o esto:

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

da OverflowException : The TimeSpan could not be parsed because at least one of the hours, minutes, or seconds components is outside its valid range

Respuesta

22

Utilice el separador . entre día y hora:

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

El TimeSpan format se define como:

... [-] d.hh: mm: ss.ff , donde el signo menos opcional indica un intervalo de tiempo negativo, el componente d es días, hh es horas medidas en un reloj de 24 horas, mm es minutos, ss es segundos yff es fracciones de segundo.

+2

mis ojos deben estar vidriosos – BozoJoe