Foros del Web » Programación para mayores de 30 ;) » .NET »

Instanciar una clase

Estas en el tema de Instanciar una clase en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/07/2005, 09:40
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 18 años, 10 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 27/07/2005, 11:09
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 19 años, 5 meses
Puntos: 0
Cita:
Iniciado por Perelu
¿ Se puede saber si mi clase está instanciada en ese momento
exactamente que necesitas?

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.
__________________
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein
  #3 (permalink)  
Antiguo 28/07/2005, 04:45
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 18 años, 10 meses
Puntos: 0
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í:

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:

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.
  #4 (permalink)  
Antiguo 28/07/2005, 14:13
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
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...
  #5 (permalink)  
Antiguo 29/07/2005, 02:37
 
Fecha de Ingreso: junio-2005
Mensajes: 15
Antigüedad: 18 años, 10 meses
Puntos: 0
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..
  #6 (permalink)  
Antiguo 29/07/2005, 08:19
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
La verdad no termino de entender que es lo que necesitas hacer.
Cita:
Que pasa si alguien hereda de mi clas
Cuál sería el problema de que alguien herede de tu clase?
Cita:
y o le pone en el new la propiedad instanciada = False
Si el constructor de tu clase no recibe ningún parámetro, entonces no le podrás mandar ningún argumento cuando instancies tu clase, es decir, no le podrá poner a la propiedad instanciada = false. En el constructor de la clase lo que vas a hacer es inicializar la propiedad en true. La propiedad tendría que ser estática. Pues disculpa por no poder ayudarte más pero no se me ocurre más nada. Si logras hacer lo que quieres sería bueno que luego lo compartieras con nosotros ya que por algo no hemos podido ayudarte. Saludos...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:19.