Class, property y function

02/03/2006 - 22:39 por Carlos Albert | Informe spam
Hola grupo.

Estoy armando una libreria de clases, y por primera vez se me ocurrio hacer
algo y no se como... Tengo la clase data y dentro de ella la clase item con
diferentes funciones (listado de items, busqueda, etc):
data.item.funcion(args)

Ahora bien, como muchas veces me traigo un solo item y quiero tan solo los
datos de ese item, queria generar algo como data.item(args).propiedad

Como cuando uno hace referencia a dataset.tables(args).rows o
dataset.tables.item(args)...

Y me di cuenta que no tengo ni idea de como hacerlo =P

Se entendio? Alguien me puede tirar una mano?

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
03/03/2006 - 04:48 | Informe spam
Es simplemente una funcion con parametros y el modificador Default si no
quieres es escribir el nombre de la propiedad:

Class MiClase

Default Property Item(ByVal args As Integer) As MiItem
' ...
End Property

End Class

Y lo usas de cualquiera de estas formas:

Dim obj As MiClase

obj(args).MiPropiedad = xxxx
obj.Item(args).MiPropiedad = xxxx

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Carlos Albert
03/03/2006 - 14:38 | Informe spam
Muchas gracias por tu respuesta... voy a tomarme el atrevimiento de
preguntarte algo mas si no te molesta...

Si quiero agregar varias propiedades con el mismo parametro, ¿como lo hago?
O sea, si quisiera "colgar" varias propiedades de el objeto item, como haria
esto:

dim nombre as string = miclase.Item(1).Nombre
dim precio as integer = miclase.Item(1).Precio
dim codigo as string = miclase.Item(1).Codigo

Y otra duda que me quedo es, ¿siempre voy a tener que declararlas como
variables (dim obj as MiClase)? ¿no puedo referenciarlas directamente como
miclase.Item(codigo).Propiedad?

"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> wrote in message
news:
Es simplemente una funcion con parametros y el modificador Default si no
quieres es escribir el nombre de la propiedad:

Class MiClase

Default Property Item(ByVal args As Integer) As MiItem
' ...
End Property

End Class

Y lo usas de cualquiera de estas formas:

Dim obj As MiClase

obj(args).MiPropiedad = xxxx
obj.Item(args).MiPropiedad = xxxx

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

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
03/03/2006 - 15:43 | Informe spam
Si quiero agregar varias propiedades con el mismo parametro, ¿como lo
hago? O sea, si quisiera "colgar" varias propiedades de el objeto
item, como haria esto:



Para eso la propiedad debe devolver un objeto que contenga las propiedades.
Por ejemplo:

Public Class MiItem

Public Property Nombre() As String
' ...
End Property

Public Property Codigo() As Integer
' ...
End Property

Public Property Precio() As Decimal
' ...
End Property

End Class

Public Class MiClase

Default Property Item(ByVal codigo As Integer) As MiItem
' ...
End Property

End Class

Y otra duda que me quedo es, ¿siempre voy a tener que declararlas como
variables (dim obj as MiClase)? ¿no puedo referenciarlas directamente
como miclase.Item(codigo).Propiedad?



Si no quieres crear una instancia de la clase declara la propiedad como
Shared, en cuyo caso deberas quitar el modificador Default.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#4 Carlos Albert
03/03/2006 - 17:41 | Informe spam
Intente algo asi, pero no se como pasarle el parametro... Ademas, bueno, no
funciona nada =S
Directamente te pasteo el codigo que estoy usando a ver si podes
ayudarme ¡¡¡¡¡¡¡GRACIAS!!!!!

Sub Pruebo()
Dim NombreHotel As String = Hoteles.Hotel(1).Nombre
Dim Hoteles As String = Hoteles.Listado
End Sub

Class HotelPropiedad

Public ReadOnly Property Nombre() As String
Get
Return "Nombre del hotel " & codigo ' Y el codigo aca de
donde lo saco?
End Get
End Property

Public ReadOnly Property Precio(ByVal Codigo As String) As Decimal
Get
Return "Precio del hotel " & Codigo
End Get
End Property
End Class

Public Class Hoteles

Public Shared ReadOnly Property Hotel(ByVal Codigo As String) As
HotelPropiedad
Get
'Y aca q meto???
End Get
End Property

Public Shared Function Listado() As String
' Aca listo
Return "Listado xxx"
End Function

End Class


"Eduardo A. Morcillo [MS MVP VB]" <emorcillo .AT. mvps.org> wrote in message
news:
Si quiero agregar varias propiedades con el mismo parametro, ¿como lo
hago? O sea, si quisiera "colgar" varias propiedades de el objeto
item, como haria esto:
Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
04/03/2006 - 04:47 | Informe spam
Aqui va un ejemplo con el VB2005:

Sub Pruebo()

' Omitiendo propiedad
Console.WriteLine(Data.Hoteles(0).Nombre)

' Colocando propiedad explicitamente
Console.WriteLine(Data.Hoteles.Item(1).Precio)

End Sub

Public Class Hotel

Private _nombre As String
Private _precio As Decimal

Public Sub New(ByVal nombre As String, ByVal precio As Decimal)
_nombre = nombre
_precio = precio
End Sub

Public ReadOnly Property Nombre() As String
Get
Return _nombre
End Get
End Property

Public ReadOnly Property Precio() As Decimal
Get
Return _precio
End Get
End Property

End Class

Public Class HotelCollection
Inherits List(Of Hotel)

Public Sub New()

' Aqui cargo la coleccion
' desde una BD, un archivo
' o creando cada item por codigo

Add(New Hotel("ABC", 123))
Add(New Hotel("DEF", 456))
Add(New Hotel("GHI", 789))

End Sub

End Class

Public NotInheritable Class Data

' Se recomienda que una clase con todos miembros Shared
' sea NotInheritable ya que no tiene nada que pueda heredarse.

Private Shared _hoteles As HotelCollection

Public Shared ReadOnly Property Hoteles() As HotelCollection
Get

' Atencion: este codigo no
' es recomendable si se usan
' multiples hilos.
If _hoteles Is Nothing Then
_hoteles = New HotelCollection()
End If

Return _hoteles

End Get
End Property

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida