¿Cuál es la forma más sencilla de saber si un parámetro de tipo implementa una interfaz en C# 2.0?
-
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;)
Solución
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