2010-05-28 12 views
6

yo estaba buscando en los metadatos para System.Web.Configuration.CompilationSection, y se dio cuenta el atributo siguiente en la propiedad TimeSpan BatchTimeout:¿Por qué 10675199.02: 48: 05.4775807 TimeSpan Maximum for CompilationSection?

[TimeSpanValidator(MinValueString = "00:00:00", 
MaxValueString = "10675199.02:48:05.4775807")] 

Podría alguien explicar por qué este es el valor máximo permitido? TimeSpan en sí tiene un límite superior, entonces ¿por qué habría otra validación de valor y por qué este número?

Respuesta

7

Ese es exactamente el valor máximo de TimeSpan. Citando MSDN para TimeSpan.MaxValue:

El valor de este campo es equivalente a Int64.MaxValue garrapatas. La representación de cadena de este valor es positivo 10675199.02: 48: 05.4775807.

8

Creo que la respuesta aceptada no responde completamente la pregunta. De hecho, es el mismo valor máximo. Y no es una coincidencia Pero ¿por qué es la definición:

[TimeSpanValidator(MinValueString = "00:00:00", MaxValueString = "10675199.02:48:05.4775807")] 

y no algo como:

[TimeSpanValidator(TimeSpan.Zero, TimeSpan.MaxValue)] 

?

En pocas palabras, se debe a que los atributos no permiten el segundo tipo de definiciones. Solo permiten constantes de tiempo de compilación, porque son metadatos que se compilan en el ensamblado.

+2

Para ampliar esto, así es como se definen los dos: 'public static readonly TimeSpan Zero = new TimeSpan (0);', public static readonly TimeSpan MaxValue = new TimeSpan (Int64.MaxValue); '. Son instancias de un tipo que no están disponibles en tiempo de compilación. –

Cuestiones relacionadas