Sauriez vous m'expliquer pourquoi ceci ne fonctionne pas?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class MaClasse<T> where T : IMonInterface
{
}
 
class MonTruc : IMonInterface
{
}
 
[...]
Main()
{
MaClasse<IMonInterface> marchepas = new MaClasse<MonTruc>();
}
Ca me dit que MaClasse<MonTruc> ne peut etre casté en MaClasse<IMonInterface>

et pourtant on pourrait tres bien faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Main()
{
IMonInterface okok = new MonTruc();
}
Je regrette amérement d'avoir mis la main dans les générique, dire qu'à l'origine c'etait pour éviter du code en double....

Merci d'avance.