SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Painkiller en Miércoles 24 de Marzo de 2010, 20:10

Título: Funciones delegadas en consola
Publicado por: Painkiller en Miércoles 24 de Marzo de 2010, 20:10
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?
Título: Re: Funciones delegadas en consola
Publicado por: eltruhanero en Jueves 25 de Marzo de 2010, 04:37
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.
Título: Re: Funciones delegadas en consola
Publicado por: Painkiller en Viernes 26 de Marzo de 2010, 19:22
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: