![]() |
Instanciar una clase Como podria saber en un determinado momento si una clase ha sido ya instanciada o no? Me explico.. Tengo una clase tal que así: Public class Perelu Public Event HacedmeCaso ' Constructor Public sub New() Proceso1() Proceso2() end sub end class Tanto el Proceso1 como el proceso 2 lanzan el evento HacedmeCaso y, además la clase lo lanza al modificar cualquiera de sus propiedades... ¿ Se puede saber si mi clase está instanciada en ese momento (Ya ha hecho el new) o todavía se encuentra en el constructor (dentro del New) al recoger el evento ? Espero no aberles aburrido mucho... Grácias de antemano. |
Cita:
Puedes comprobar con "nothing" si tu clase está instanciada, si existe.. Por ejemplo: Dim Myclase As Perelu = New Perelu If Not Myclase is nothing then 'tu clase existe else 'obvio, lo contrario jej end if Espero te sirva de ayuda. Saludos. |
:arriba: Correcto Rony pero no es exactamente lo que necesito. Yo lo que quiero es saber desde mi propia clase si ya he sido instanciado del todo o no.. algo así: :no: Public ReadOnly Property Instanciado() As Boolean Get If Me Is Nothing Then Return False Else Return True End If End Get End Property El problema es que esto no funciona, si llamo a la propiedad Instanciado desde el new me devuelve siempre True, aunque no se haya la función todavía. También he probado con una función shared con el mismo resultado: :no: Public Shared ReadOnly Property Instanciado(ByVal objClase As Object) As Boolean Get If objClase Is Nothing Then Return False Else Return True End If End Get End Property El principal problema es que no puedo poner una variable externa que indique que ya se ha instanciado o no la ha hecho todavía porque si heredamos esta clase es pasible que se sobreescriba el método new.. :'( Gracias de todas maneras por intentar ayudarme. Un Saludo. |
Creo que puedes hacer uso de una propiedad boolean que sea estática, luego lo que haces es asignarle un valor por ej: True en el constructor de la clase, de esta forma cuando crees una instancia de la clase ya ahí le indicas a la propiedad el valor True que indica que la clase ha sido instanciada. Luego desde donde quieras puedes preguntar por el valor de esa propiedad, si es True ya fue instanciada sino pues no. La verdad no sé si funcione o sea lo correcto, pues nunca lo he hecho y porque fue lo primero que se me vino a la cabeza :). Saludos... |
Eso sería lo mas cómodo pero se me presentó el problema de la herencia: Public class Perelu public Instanciada as boolean public sub new instanciada = False Proceso1() Proceso2() instanciada = True end sub end class Public class Perelu2 inherits Perelu Public sub new mybase.new instanciada = False Proceso3() Proceso4() instanciada = True end sub end class De esta manera estaría solucionado ¡¡¡ pero !!! (Siempre hay un pero..) Que pasa si alguien hereda de mi clas y o le pone en el new la propiedad instanciada = False, lo que pretendo es tener una propiedad que no dependa del programador que por si misma sea capaz de indicarme si la clase ha sido instanciada ya o no. He estado mirando algunas propiedades del Type de la clase por si allí me indicaba algo pero no lo he encontrado. A lo mejor en System.Reflection puedo encontrar algo, si alguien tiene idea de algo parecido... De todas formas muchas gracias por intentar ayudarme chicos.. :risa: |
La verdad no termino de entender que es lo que necesitas hacer. Cita:
Cita:
|
| La zona horaria es GMT -6. Ahora son las 01:04. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.