Vous ne savez pas exactement comment formuler la question, car c'est un "pourquoi ça ne marche pas?" type de requête.Contraintes génériques et implémentation d'interface/héritage
J'ai réduit mon problème particulier jusqu'à ce code:
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'
{
}
}
Maintenant, le type générique T
dans la classe Bar<T>
doit mettre en œuvre IFoo. Alors pourquoi le compilateur me donne-t-il l'erreur dans le commentaire? Sûrement une instance de Foo est un IFoo, et peut donc être passé en tant que représentant du type générique T
?
Est-ce une limitation du compilateur ou manque-t-il quelque chose?
C'est gentil car je ne savais pas que vous pourriez la nouvelle chose T(), vous venez de sauver ma vie dans un projet sur lequel je travaille. À votre santé :) –