Diese Idee hatte ich aus stackoverflow kopiert. Der Autor hat einfach alle diejenigen Interfaces als Bedingung gesetzt, von der jeder numerische Datentyp erbt. So wird gewährleistet das kein <string> und dergleichen übergeben werden kann (propbier's aus ) _
Die Methode ist ausschließlich für Int64 Int32 und vielleicht int16 implementiert. Double, byte et cetera behandeln meiner Einschätzung nach Überläufe ganz anders. _
Das sind Spezialfälle. Schau einfach wie double Überläufe behandelt. Addiere zum double.Max Werte hinzu und schau was passiert. Du kannst exemplarisch prüfen ob ein Wert "Infinity" ist. Gibt weitere Fälle die abgedeckt sein müssen. Grüße. _