No estoy del todo seguro de cómo formular la pregunta, porque es un "¿por qué no funciona?" tipo de consulta.Limitaciones genéricas e implementación/herencia de la interfaz
he reducido mi tema en particular a este código:
public interface IFoo
{
}
public class Foo : IFoo
{
}
public class Bar<T> where T : IFoo
{
public Bar(T t)
{
}
public Bar()
: this(new Foo()) // cannot convert from 'Foo' to 'T'
{
}
}
Ahora, el tipo genérico T
en la clase Bar<T>
debe aplicar IFoo. Entonces, ¿por qué el compilador me da el error en el comentario? Sin duda, una instancia de Foo es un IFoo, y por lo tanto, se puede pasar como un representante del tipo genérico T
?
¿Esto es una limitación del compilador o me falta algo?
Esto es dulce ya que no sabía que podrías hacer lo nuevo de T(), acabas de salvarme la vida en un proyecto en el que estoy trabajando. Saludos :) –