Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TrashAmbishion en 18 Octubre 2016, 19:36 pm



Título: Accediendo a variable declarada con eventos (WithEvents)
Publicado por: TrashAmbishion en 18 Octubre 2016, 19:36 pm
En el form principal (frmprin) declare

Código
  1. Private WithEvents mysocket As ShadowMud.Sockets.AsyncSocket

Necesito acceder a ella desde una clase, no lo declare Shared porque tengo que hacer muchos cambios en Sub que trabajan con el desde el form, por lo que declare otra variable similar pero Shared

Código
  1. Private Shared WithEvents samesocket As ShadowMud.Sockets.AsyncSocket

En un Sub

Código
  1. Sub X
  2.  
  3. 'Ya mysocket fue inicializado en otro Sub
  4.  
  5. samesocket = mysocket
  6.  
  7. End Sub
  8.  
  9. Desde la clase:
  10.  
  11. Sub Y
  12.  
  13. frmprin.samesocket.enviar("lolololo")
  14.  
  15. End Sub

No creo una varible en la misma clase porque esta lo que guarda es el estado de una conexión TCPIP y necesito utilizar esa misma para enviar datos.

Gracias cualquier ayuda..

Salu2


Título: Re: Accediendo a variable declarada con eventos (WithEvents)
Publicado por: Eleкtro en 18 Octubre 2016, 21:19 pm
Necesito acceder a ella desde una clase

Si quieres acceder al miembro "MySocket" desde otra clase distinta a donde declaraste dicho objeto, entonces debes reemplazar la visibilidad "Private" para eliminar la restricción de acceso al miembro declarado a nivel de clase, logicamente.

En su lugar puedes utilizar la visibilidad "Friend", la cual te permitirá acceder a dicho miembro a nivel de ensamblado, es decir, desde cualquier otra clase o módulo que exista dentro de tu proyecto. Ejemplo:

Código
  1. Imports ShadowMud.Sockets
  2.  
  3. Public NotInheritable Class Form1 : Inherits Form
  4.  
  5.    Friend WithEvents MySocket As AsyncSocket
  6.  
  7. End Class

Código
  1. Imports ShadowMud.Sockets
  2.  
  3. Public NotInheritable Class Class1
  4.  
  5.    Private Sub New()
  6.    End Sub
  7.  
  8.    Public Shared Sub MyMethod()
  9.        Dim sock As AsyncSocket = My.Forms.Form1.MySocket
  10.        ' ...
  11.    End Sub
  12.  
  13. End Class

También puedes usar la sentencia de visibilidad "Public" en lugar de "Friend", claro está, suponiendo que necesites y/o no te importe que cualquier otra persona pueda acceder al miembro "MySocket" referenciando el ensamblado que estás compilando.

Saludos!


Título: Re: Accediendo a variable declarada con eventos (WithEvents)
Publicado por: TrashAmbishion en 19 Octubre 2016, 05:38 am
Thx bro