Funciones globales en VB.NET???

16/12/2003 - 16:26 por Mariano | Informe spam
Me gustaría saber cómo generar una DLL en VB.NET en la que
haya funciones globales que puedan usarse sin que haya que
crear un objeto.

En VB6 podía hacerse con una clase, que tuviera la
propiedad Instancing puesta a "Global Multiuse", pero no
tengo ni idea de cómo puede hacerse en VB.NET.

Por ejemplo, tengo en una DLL una clase
llamada "Funciones", con funciones de texto que me
permiten, por ejemplo, poner el carácter "\" al final de
una ruta (si dicha ruta no lo lleva, claro). Esta función
se llama "ARuta", y en un programa de VB6 puedo escribir

MsgBox ARuta("c:\temp")

sin que el IDE me avise de que tengo que crear un objeto
de la clase "Funciones". No sé si me he explicado con
claridad. El caso es que si lo intento en VB.NET, tengo
que crear un objeto de tipo "Funciones", y acceder a esas
funciones a través de dicho objeto.

Por ejemplo, para hacer lo mismo de antes tendría que
escribir:

Dim NuevoObjeto as new Funciones
MsgBox NuevoObjeto.ARuta("c:\temp")
NuevoObjeto = Nothing

¿Alguien me puede explicar cómo se puede conseguir
escribir este tipo de funciones en VB.NET?

Gracias

Preguntas similare

Leer las respuestas

#1 Guillermo guille
16/12/2003 - 17:52 | Informe spam
hola,

Inserta esas funciones dentro de un módulo (Module) en lugar de una clase
(Class).
Si ese módulo está en otro espacio de nombres, haz una importación de dicho
espacio de nombres y funcionará.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/ (en construcción)
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Mariano" wrote in message
news:0c4101c3c3e9$0bd99130$
Me gustaría saber cómo generar una DLL en VB.NET en la que
haya funciones globales que puedan usarse sin que haya que
crear un objeto.

En VB6 podía hacerse con una clase, que tuviera la
propiedad Instancing puesta a "Global Multiuse", pero no
tengo ni idea de cómo puede hacerse en VB.NET.

Por ejemplo, tengo en una DLL una clase
llamada "Funciones", con funciones de texto que me
permiten, por ejemplo, poner el carácter "\" al final de
una ruta (si dicha ruta no lo lleva, claro). Esta función
se llama "ARuta", y en un programa de VB6 puedo escribir

MsgBox ARuta("c:\temp")

sin que el IDE me avise de que tengo que crear un objeto
de la clase "Funciones". No sé si me he explicado con
claridad. El caso es que si lo intento en VB.NET, tengo
que crear un objeto de tipo "Funciones", y acceder a esas
funciones a través de dicho objeto.

Por ejemplo, para hacer lo mismo de antes tendría que
escribir:

Dim NuevoObjeto as new Funciones
MsgBox NuevoObjeto.ARuta("c:\temp")
NuevoObjeto = Nothing

¿Alguien me puede explicar cómo se puede conseguir
escribir este tipo de funciones en VB.NET?

Gracias
Respuesta Responder a este mensaje
#2 Mariano
16/12/2003 - 20:48 | Informe spam
Gracias.
Respuesta Responder a este mensaje
#3 Dany Acosta
17/12/2003 - 00:35 | Informe spam
En Vs.Net funciones globales ya no existen en ese termino ahora todo
es HERENCIA... Ahora para hacer un funcion que herede todo el proyecto
tendrias que crear un clase y dentro de la clase crear funcion public..
ejmplo

Public class class1
' Puedes usar Public, Protect, Friend, Private o combinar algunas de
ellas...
Public sub prueba
end sub
end Class

suerte

Nota.
si estoy equivocado corriganme para poder aprender



Mariano wrote:
Gracias.

Respuesta Responder a este mensaje
#4 Javier Villarroel
17/12/2003 - 10:11 | Informe spam
Está bien, yo solo haría una puntualización, para que realmente sean como
globales, yo me declaro las funciones de tipo Shared y así no tengo que
crear un nuevo objeto y puedo usarlas desde cualquier parte del proyecto.,
por ejemplo:

Public Class Funciones

Public Shared Sub Main()
.
End Sub

Public Shared Function LoQueSea() As TipoDato
.
End

End Class


Y luego desde cualquier sitio sin tener que instanciar un nuevo objeto:

Call Funciones.LoQueSea()

Espero que sirva.

"Dany Acosta" escribió en el mensaje
news:
En Vs.Net funciones globales ya no existen en ese termino ahora todo
es HERENCIA... Ahora para hacer un funcion que herede todo el proyecto
tendrias que crear un clase y dentro de la clase crear funcion public..
ejmplo

Public class class1
' Puedes usar Public, Protect, Friend, Private o combinar algunas de
ellas...
Public sub prueba
end sub
end Class

suerte

Nota.
si estoy equivocado corriganme para poder aprender



Mariano wrote:
> Gracias.
>

Respuesta Responder a este mensaje
#5 Guillermo guille
17/12/2003 - 15:32 | Informe spam
hola,

Eso es lo mismo que usando un Module, con la diferencia que usando un Module no
necesitas indicar el nombre de la clase.
En C# no existen los tipos Module y habrá que usar una clase, pero en VB lo
podemos hacer de las dos formas.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/ (en construcción)
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Javier Villarroel" wrote in message
news:eiX%
Está bien, yo solo haría una puntualización, para que realmente sean como
globales, yo me declaro las funciones de tipo Shared y así no tengo que
crear un nuevo objeto y puedo usarlas desde cualquier parte del proyecto.,
por ejemplo:

Public Class Funciones

Public Shared Sub Main()
.
End Sub

Public Shared Function LoQueSea() As TipoDato
.
End

End Class


Y luego desde cualquier sitio sin tener que instanciar un nuevo objeto:

Call Funciones.LoQueSea()

Espero que sirva.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida