Probar si el objeto implementa la interfaz

Resuelto JoshRivers asked hace 15 años • 15 respuestas

¿Cuál es la forma más sencilla de probar si un objeto implementa una interfaz determinada en C#? (Respuesta a esta pregunta en Java )

JoshRivers avatar Jan 04 '09 08:01 JoshRivers
Aceptado
if (object is IBlah)

o

IBlah myTest = originalObject as IBlah

if (myTest != null)
Robert C. Barth avatar Jan 04 '2009 01:01 Robert C. Barth

Usar los operadores iso ases la forma correcta si conoce el tipo de interfaz en el momento de la compilación y tiene una instancia del tipo que está probando. Algo que nadie más parece haber mencionado es Type.IsAssignableFrom:

if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}

Creo que esto es mucho mejor que mirar la matriz devuelta por GetInterfacesy tiene la ventaja de funcionar también para las clases.

Andrew Kennan avatar Jan 07 '2009 00:01 Andrew Kennan

Si desea utilizar el objeto encasillado después de la verificación:
Desde C# 7.0:

if (obj is IMyInterface myObj)

Esto es lo mismo que

IMyInterface myObj = obj as IMyInterface;
if (myObj != null)

Consulte Documentos .NET: descripción general de la coincidencia de patrones

Martin Schneider avatar Jun 27 '2018 12:06 Martin Schneider