Método de sobrecarga basado en restricciones genéricas?
¿Puedo tener métodos sobrecargados que difieran solo por tipo genérico?restricciones?
Esto no se compila:
void Foo<T>(T bar) where T : class
{
}
void Foo<T>(T bar) where T : struct
{
}
Dado que estos son métodos "abiertos", el método real debe cerrarse / construirse / definirse completamente cuando se haga referencia en otro lugar en el código con un tipo concretoT
, y entonces estaría claro a qué sobrecarga llamar.
La solución obvia no es sobrecargarlos, pero me pregunto por qué esto no funciona en C #.
Pregunta adicional: Si esto es solo una restricción del compilador de C #, ¿permite la IL tal sobrecarga?