Tengo un parámetro de objeto y necesito verificar si el objeto implementa una interfaz específica en vb.net. Cómo probar esto?Prueba si un objeto implementa una interfaz
Gracias.
Tengo un parámetro de objeto y necesito verificar si el objeto implementa una interfaz específica en vb.net. Cómo probar esto?Prueba si un objeto implementa una interfaz
Gracias.
Uso TypeOf...Is:
If TypeOf objectParameter Is ISpecifiedInterface Then
'do stuff
End If
Tenga en cuenta que si "hacer cosas" requiere invocar a un miembro de la interfaz en el objeto, es probable que desee usar 'Como' para convertir y luego asegurarse de que el objeto 'No sea nada'. (Esto evita un segundo lanzamiento innecesario). – bobbymcr
requiredInterface.IsAssignableFrom (representedType)
tanto requiredInterface y representedType son tipos
También encontré este article por Scott Hansleman ser particularmente útil con esto. En ella, él recomienda
C#
if (typeof(IWhateverable).IsAssignableFrom(myType)) { ... }
que terminé haciendo:
VB.Net
Dim _interfaceList As List(Of Type) = myInstance.GetType().GetInterfaces().ToList()
If _interfaceList.Contains(GetType(IMyInterface)) Then
'Do the stuff
End If
Tengo un List(Of String)
y la TypeOf tmp Is IList
vuelve False
. Una lista (Of T) implementa varias interfaces (IEnumerable, IList, ...) y el control de un solo requiere el siguiente fragmento en VB:
If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then
// do stuff...
End If
Aquí es una forma sencilla de determinar si una variable de objeto determinado "o "implementa una interfaz específica" ISomething ":
If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then
' The interface is implemented
End If
Esta es una gran pregunta, coincide exactamente con mi consulta de búsqueda en Google y tiene una respuesta. – CodingBarfield