¿Cuál es la forma más sencilla de saber si un parámetro de tipo implementa una interfaz en C# 2.0?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Por ejemplo, dado un método de parámetro de tipo, estoy buscando algo como la parte en negrita

void MiMétodo< T >() {
si ( tipo de (T). Implementos ( IMyInterfaz ) ) {

  //Do something   

demás

  //Do something else 

}

Las respuestas que usan C# 3.0 también son bienvenidas, pero primero elimine las de .NET 2.0;)

¿Fue útil?

Solución

Tipo.IsAssignableFrom

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

Otros consejos

Creo

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

También debería funcionar:pero no veo ninguna ventaja...

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top