Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why 10675199.02:48:05.4775807 TimeSpan Maximum for CompilationSection?

I was looking at the metadata for System.Web.Configuration.CompilationSection, and noticed the following attribute on the TimeSpan BatchTimeout property:

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

Could someone explain why this is the allowed max value? TimeSpan itself has an upper limit, so why would there be another value validation, and why this number?

like image 709
Alex Avatar asked May 28 '10 23:05

Alex


2 Answers

That is exactly the maximum value of TimeSpan. Quoting MSDN for TimeSpan.MaxValue:

The value of this field is equivalent to Int64.MaxValue ticks. The string representation of this value is positive 10675199.02:48:05.4775807.

like image 175
Julien Lebosquain Avatar answered Nov 15 '22 19:11

Julien Lebosquain


I think the accepted answer does not fully answer the question. It is indeed the same maximal value. And it's no coincidence. But why is the definition:

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

and not something like:

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

?

Well simply put, it's because Attributes don't allow the second kind of definitions. They only allow compile time constants, because they are meta data that's compiled into the assembly.

like image 41
No answer Avatar answered Nov 15 '22 19:11

No answer