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

StackOverflow https://stackoverflow.com/questions/96027

  •  01-07-2019
  •  | 
  •  

Question

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

  

annule MyMethod < T & Gt; () {
  if ( typeof (T) .Implements ( IMyInterface ) )   {

  //Do something   
     

sinon

  //Do something else 
     

}

Les réponses utilisant C # 3.0 sont également les bienvenues, mais supprimez d'abord celles de .NET 2.0;)

Était-ce utile?

La solution

Type.IsAssignableFrom

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

Autres conseils

Je pense

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

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

& # 207; venez d'essayer d'utiliser

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

Et ça marche aussi, mais votre réponse semble plus robuste et était ce que je cherchais. Merci!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top