Qual è il modo più semplice per sapere se un tipo param implementa un'interfaccia in C# 2.0?

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

  •  01-07-2019
  •  | 
  •  

Domanda

Ad esempio, dato un metodo di tipo param, sto cercando qualcosa come la parte in grassetto

void MioMetodo< T >() {
Se ( tipodi(T).Implementi( IMyInterface ) ) {

  //Do something   

altro

  //Do something else 

}

Anche le risposte utilizzando C# 3.0 sono benvenute, ma prima elimina quelle .NET 2.0, per favore ;)

È stato utile?

Soluzione

Type.IsAssignableFrom

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

Altri suggerimenti

Penso

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

dovrebbe funzionare anche:ma non vedo alcun vantaggio...

Ho appena provato a usarlo

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

E funziona anche, ma la tua risposta sembra più solida ed era quello che stavo cercando.Grazie!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top