Estoy tratando de escribir un método de extensión en tipos numéricos para ser utilizado en un marco de prueba fluido que estoy construyendo. Básicamente, quiero hacer esto:Restricción genérica para hacer coincidir los tipos numéricos
public static ShouldBeGreaterThan<T>(this T actual, T expected, string message)
where T : int || T: double || etc...
Sólo where T : struct
no hace, ya que también coincidirá con string
y bool
, y posiblemente algo más que me olvido. ¿Hay algo que pueda hacer para hacer coincidir solo los tipos numéricos? (Específicamente, los tipos que implementan los operadores >
y <
, para que pueda compararlos ... Si esto significa que también estoy haciendo coincidir fechas, en realidad no importa; la extensión seguirá haciendo lo que espero)
Jon Skeet y Mark Gravell reunieron algunas clases interesantes para esto: http://www.yoda.arachsys.com/csharp/genericoperators.html –
@ Dan en realidad es "Marc", pero te dejaré salir - muy pocas personas lo hacen bien; p –