2010-06-30 9 views
14

Il semble que ConfigurationElement de TimeSpan ne peut pas gérer les valeurs supérieures à 23:59:59. Y a-t-il des solutions de contournement? Sous-classe TimeSpan, et en faisant un nouveau TimeSpanValidatorAttribute va même au travail? Je dois gérer des périodes de quelques minutes à quelques jours.TimeSpan de jours en configuration?

J'utilise la section de configuration suivante

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

avec config qui ressemble à ceci:

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

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

ou ceci:

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

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

Répondre

22

Utilisez le séparateur . entre les jours et heures:

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

Le TimeSpan format est défini comme:

... [-] d.hh: mm: ss.ff , où le signe moins facultatif indique un intervalle de temps négatif, la composante d est des jours, hh est des heures mesurées sur une horloge de 24 heures, mm est des minutes, ss est des secondes et ff est des fractions de seconde.

+2

mes yeux doivent avoir glacé sur – BozoJoe