Bruno nos contaba hoy como validar si un objeto implementa una intefaz.
De paso que pruebo el Plugin de WLW os doy otra opción sin usar Reflection.
Ya comenta Rodrígo de hacerlo de esta forma y yo os enseño el código. Parece que es mucho más código, pero en realidad la comprobación es la función Comprobar().
‘Esta es la intefaz que vamos a utilizar.
Public Interface IClase
Property name() As String
End Interface‘Esta es la clase que la implmenta
Public Class Clase_1
Implements IClasePrivate _name As String
Public Property name() As String Implements IClase.name
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class‘Esta es una clase que no la implementa
Public Class Clase_2
Private _name As StringPublic Property name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class‘Y aquí tenemos el ejemplo
Public Class Form1‘Esta es la función para comprobar
Public Function Comprobar(ByVal Obj As Object) As Boolean
Try
Dim NewObj As Object
NewObj = CType(Obj, IClase)
Catch ex As Exception
Return False
Exit Function
End Try
Return True
End FunctionPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Clase1 As New Clase_1()
Dim Clase2 As New Clase_2()Dim _msg As String
If Comprobar(Clase1) Then
_msg = «Clase1 SI implmenta la intefaz» & Chr(13)
Else
_msg = «Clase1 NO implmenta la intefaz» & Chr(13)
End IfIf Comprobar(Clase2) Then
_msg += «Clase2 SI implmenta la intefaz»
Else
_msg += «Clase2 NO implmenta la intefaz»
End IfMsgBox(_msg)
End Sub
End Class
Eso es todo [:D], espero que os sea útil.
Yo lo valido siempre asi, y funciona.
aqui dejo Un recorte de codigo Real
If TypeOf obj Is IListaClasesRellenable And Not TypeOf obj Is IListaAbstracta Then ‘ Si es una lista de clases rellenable
Dim dr As DataRow
For Each dr In dt.Rows
‘ Añadimos el valor de la columna
Call Filler(CType(obj, IListaClasesRellenable).AddNew(dr(0).ToString), dr, dtcb)
Next