• Viernes 1 de Noviembre de 2024, 17:39

Autor Tema:  Funciones delegadas en consola  (Leído 1492 veces)

Painkiller

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Funciones delegadas en consola
« en: Miércoles 24 de Marzo de 2010, 20:10 »
0
Hola que tal estaba desarrollando una aplicacion en la cual tengo una clase static con metodos static. Mas o menos en codigo seria asi:
Código: C#
  1.  
  2. public static class A
  3. {
  4.     public delegate void Handler(parametros..);
  5.     public static void CreateHandler(Handler h)
  6.         {
  7.               ....
  8.         }
  9. }
  10.  
  11.  

El problema es que cuando llamo a esta funcion en el main me da un error de
Error   1   An object reference is required for the non-static field, method, or property 'Namespace.Program.Reader(System.IntPtr, System.IntPtr)'   
y en la clase que contiene el main es de la forma:
Código: C#
  1.  
  2. class Program
  3.     {
  4.         public void Reader(IntPtr wParam, IntPtr lParam)
  5.         {
  6.             ....
  7.         }
  8.  
  9.         static void Main(string[] args)
  10.         {
  11.             A.CreateHandler(Reader)
  12.             ....
  13.         }
  14.  
  15.  
  16.  

Simplemente no se a que se deba el error, ademas el metodo Reader no lo puedo llamar desde el main, de hecho no "veo" ninguna otra funcion desde el main. Hay algo que este haciendo mal?

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Funciones delegadas en consola
« Respuesta #1 en: Jueves 25 de Marzo de 2010, 04:37 »
0
Hola, desde static void Main(string[] args), no podes hacer referencia a un metodo no estatico de la misma clase public void Reader(IntPtr wParam, IntPtr lParam)

Precisas hacer static el metodo Reader:
Código: C#
  1.  
  2. class Program
  3.     {
  4.         public static void Reader(IntPtr wParam, IntPtr lParam)
  5.         {
  6.         }
  7.  
  8.         static void Main(string[] args)
  9.         {
  10.             A.CreateHandler(new A.Handler(Reader));
  11.         }
  12.     }
  13.  
  14.     public static class A
  15.     {
  16.         public delegate void Handler(IntPtr wParam, IntPtr lParam);
  17.         public static void CreateHandler(Handler h)
  18.         {
  19.         }
  20.     }
  21.  
  22.  

Espero ayude.
Saludos, Daniel.

Painkiller

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Funciones delegadas en consola
« Respuesta #2 en: Viernes 26 de Marzo de 2010, 19:22 »
0
Funcione muy bien, el problema lo tenia por que creia que al igual que en windows forms podias accesar a las funciones de la clase sin ser estaticas  :rolleyes: