Quel est le moyen le plus simple de savoir si un param de type implémente une interface dans c # 2.0?

Par exemple, étant donné une méthode de type param je cherche quelque chose comme la partie en gras

void MyMethod< T >() {
if ( typeof(T).Implements( IMyInterface ) ) {

  //Do something   

else

  //Do something else 

}

Les réponses utilisant C# 3.0 sont également les bienvenues, mais laissez tomber les .NET 2.0 s'il vous plaît;)

0

3 Réponses

Je viens d'essayer d'utiliser

if( typeof(T).Equals(typeof(IMyInterface) ) 
     ...

Et fonctionne également, mais votre réponse semble plus robuste et était ce que je cherchais. Merci!

0
ajouté
Cela a fonctionné pour moi dans mon cas spécifique, mais le comportement est celui que vous décrivez: cela ne fonctionne pas si vous voulez savoir si un objet implémente IMyInterface, mais affirmer que le type T est un IMyInterface. Merci pour la correction!
ajouté l'auteur Ricardo Amores, source
Cela fait? il devrait seulement fonctionner de T est spécifiquement IMyInterface
ajouté l'auteur James Curran, source

je pense

if (typeof (IMyInterFace).IsAssignableFrom(typeof(T))

devrait également fonctionner: mais je ne vois pas un avantage ...

0
ajouté

Type.IsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
 //something
}
else
{
 //something else
}
0
ajouté