valores en clase se limpian

31/08/2004 - 18:36 por Imac_Man | Informe spam
saludos

tengo una clase con dos variables una tipo boolean y otra integer, cada una
la alimento con una property del tipo correspondiente, el caso es que luego
creo una instancia de esa clase en otra a la que llamare clase2, mi
intencion es que en esta clase dos pueda usar los valores que llene en la
Clase1

la idea es esta en la clase2

dim blnValor1 as boolean
dim intValor2 as integer

dim myclase1 as new clClase1

blnValor1 = myclase1.blnVariable
strValor2 = myclase1.intVariable

el caso es que estas variables vienen vacias, aunque yo les haya asignado
valoresporque se pierden los valores desde una clase a la otra si las
variables son publicas en la Clase1 y ya les he asignado valores mediante
propertiescomo lo puedo solventar.

gracias

Preguntas similare

Leer las respuestas

#6 Imac_Man
31/08/2004 - 20:08 | Informe spam
pero es que ya les asigne valores, es solo que lo omito en el
ejemplopero supongamos que no son propiedades sino que les asigno
valores sencillos a una variable 3 y a otra false, pasa igual.

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
> dim inst_clase1 as new Clase1
> x = inst_clase1.intValor1
> y = inst_clase2.blnValor2

Si eso es exactamente lo que estas haciendo es logico ya que estas creando
una nueva instancia de la clase y no le has asignado nada todavia. Por


otro
lado, no es bueno que las variables sean publicas, mejor las haces


privadas
y accedes a ellas mediante propiedades.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo



Respuesta Responder a este mensaje
#7 Tristan
31/08/2004 - 20:22 | Informe spam
¿No asignarás los valores usando exclusivamente el atributo DefaultValue,
verdad?

Si no es eso, tal vez tengas un problema de persistencia. Tal vez no estés
serializando el valor de las clase, con lo cual el valor de diseño se
pierde.

Juan Carlos Badiola
Respuesta Responder a este mensaje
#8 Imac_Man
31/08/2004 - 22:02 | Informe spam
ahora estoy mas confundido que al inicio...creo que mejor desisto de hacer
lo que tenia en mentePero igual gracias por su valiosa ayuda, siempre me
sacan de lios serios.

saludos

"Tristan" escribió en el mensaje
news:
Perdón por meterme, pero en tu código:

dim inst_clase1 as new Clase1
x = inst_clase1.intValor1
y = inst_clase2.blnValor2

Parece lógico que intValor1 y blnValor2 no tengan valor. No les has


asignado
ningún valor a no ser que hayas olvidado escribirnos el constructor, que


es
precisamente lo importante de la Clase1 de cara a tu problema.

¿Es posible que no estés asignando su valor predeterminado?. El atributo
DefaultValue solo sirve para asignar el valor por defecto en tiempo de
diseño, pero debe corresponderse con una inicialización apropiada en el
constructor o en la declaración de la variable.

Por otro lado, supongo que lo de hacer públicas las variables de las
propiedades lo has puesto a efectos de prueba, por que desde luego no es
nada recomendable. De hecho, convertiría las propiedades en inútiles.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#9 Eduardo A. Morcillo [MS MVP VB]
31/08/2004 - 22:35 | Informe spam
Un ultimo intento:

Imports System.ComponentModel

Public Class MiTextBox
Inherits TextBox

Private _miPropiedad As New CMiPropiedad

' TypeConverter = ExpandableObjectConverter para
' ver las propiedades del objeto.
' DesignerSerializationVisibility DesignerSerializationVisibility.Content
' para que el diseñador serialize las propiedades del objeto
<TypeConverter(GetType(ExpandableObjectConverter)), _

DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property MiPropiedad() As CMiPropiedad
Get
Return _miPropiedad
End Get
Set(ByVal value As CMiPropiedad)
_miPropiedad = value
End Set
End Property

' Vuelve la propiedad a su valor por defecto
Public Sub ResetMiPropiedad()
_miPropiedad = New CMiPropiedad
End Sub

' Indica al diseñador si debe o no serializar la propiedad
Private Function ShouldSerializeMiPropiedad() As Boolean

Return _miPropiedad.MiPropiedad1 <> 10 Or _
_miPropiedad.MiPropiedad2 <> True

End Function

End Class

Public Class CMiPropiedad

Private _miPropiedad1 As Integer = 10
Private _miPropiedad2 As Boolean = True

' DefaultValue para indicar a la ventana de
' propiedades y al diseñador el valor por defecto
' de la propiedad.
' RefreshProperties para que se actualice la
' la ventana de propiedades despues de cambiar la propiedad
<DefaultValue(10), RefreshProperties(RefreshProperties.Repaint)> _
Public Property MiPropiedad1() As Integer
Get
Return _miPropiedad1
End Get
Set(ByVal value As Integer)
_miPropiedad1 = value
End Set
End Property

<DefaultValue(True), RefreshProperties(RefreshProperties.Repaint)> _
Public Property MiPropiedad2() As Boolean
Get
Return _miPropiedad2
End Get
Set(ByVal value As Boolean)
_miPropiedad2 = value
End Set
End Property

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida