¿Cuál es la forma más fácil de saber si un tipo param implementa una interfaz en c # 2.0?

Por ejemplo, dado un método tipo param, estoy buscando algo así como la parte en negrita

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

  //Do something   

else

  //Do something else 

}

Los torres que usan C# 3.0 también son bienvenidos, pero primero suelten los .NET 2.0 por favor;)

0
agregado editado
Puntos de vista: 2

3 Respuestas

Acabo de intentar usar

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

Y también funciona, pero tu respuesta parece más sólida y era lo que estaba buscando. ¡Gracias!

0
agregado
Me funcionó en mi caso específico, pero el comportamiento es el que describes: no funciona si quieres saber si un objeto implementa IMyInterface, pero para afirmar que el tipo T es un IMyInterface. ¡Gracias por la corrección!
agregado el autor Ricardo Amores, fuente
¿Lo hace? solo debería funcionar de T es específicamente IMyInterface
agregado el autor James Curran, fuente

creo

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

también debería funcionar: pero no veo una ventaja ...

0
agregado

Type.IsAssignableFrom

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