IComponent

21/03/2006 - 05:35 por hugo | Informe spam
Hola Grupo:

Estoy haciendo unas clases como cliente, articulo, etc. Funcionan como
orígenes de datos en tiempo de ejecución. Lei que para enlazar en tiempo de
diseño deben implementar la interface IComponent. Busque en internet y todos
los ejemplos heredan la clase Component (la cual implementa dicha
interface).
El problema que tengo es que no puedo heredar esa clase porque mis objetos
(cliente, articulo) ya están heredando una clase llamada entidad y como
saben .net no soporta herencia múltiple.
Algúién sabe cómo implementar IComponent???
Me pueden dar una mano!!!!!!
Gracias y saludos.
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
21/03/2006 - 07:34 | Informe spam
El problema que tengo es que no puedo heredar esa clase porque mis
objetos (cliente, articulo) ya están heredando una clase llamada
entidad y como saben .net no soporta herencia múltiple.



¿Y no puedes hacer que "entidad" herede de Component? Seria la solucion mas
simple. Si por algun motivo no puedes, la segunda opcion seria implementar
IComponent en "entidad" porque no le veo mucha practicidad implementarlo en
cada clase heredada de "entidad".

Algúién sabe cómo implementar IComponent???



Es una interface bastante simple de implementar.

Public Class MiComponente
Implements IComponent

Public Event Disposed(ByVal sender As Object, ByVal e As
System.EventArgs) _
Implements System.ComponentModel.IComponent.Disposed

Private _disposed As Boolean = False
Private _site As ISite

<Browsable(False)> _
Public Property Site() As System.ComponentModel.ISite Implements
System.ComponentModel.IComponent.Site
Get
Return _site
End Get
Set(ByVal value As System.ComponentModel.ISite)
_site = value
End Set
End Property

Protected Overridable Sub Dispose(ByVal disposing As Boolean)

If Not _disposed Then

If disposing AndAlso _
Not _site Is Nothing AndAlso _
Not _site.Container Is Nothing Then

_site.Container.Remove(Me)

End If

End If

_disposed = True

RaiseEvent Disposed(Me, EventArgs.Empty)

End Sub

Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub

End Class

Site te permite acceder a informacion como el contenedor (Site.Container),
si es tiempo de diseño (Site.DesignMode) y el nombre dado al componente en
el diseñador (Site.Name).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Preguntas similares