C# Language Inferencia de tipos (clases)


Ejemplo

Los desarrolladores pueden verse atrapados por el hecho de que la inferencia de tipos no funciona para los constructores:

class Tuple<T1,T2>
{
   public Tuple(T1 value1, T2 value2)
   {
   }
}

var x = new Tuple(2, "two");              // This WON'T work...
var y = new Tuple<int, string>(2, "two"); // even though the explicit form will.

La primera forma de crear una instancia sin especificar explícitamente los parámetros de tipo causará un error de tiempo de compilación que diría:

El uso del tipo genérico 'Tuple <T1, T2>' requiere 2 argumentos de tipo

Una solución común es agregar un método auxiliar en una clase estática:

static class Tuple
{
    public static Tuple<T1, T2> Create<T1, T2>(T1 value1, T2 value2)
    {
         return new Tuple<T1, T2>(value1, value2);
    }
}

var x = Tuple.Create(2, "two");  // This WILL work...