elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] ¿falta una directiva de uso o una referencia de ensamblado?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] ¿falta una directiva de uso o una referencia de ensamblado?  (Leído 28,235 veces)
Siuto
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Que puedo decir??


Ver Perfil WWW
[C#] ¿falta una directiva de uso o una referencia de ensamblado?
« en: 26 Diciembre 2009, 19:43 pm »

Estoy aprendiendo C# y se me presenta un problema que no se como se soluciona a ver si me pueden dar una mano...

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Project1
  7. {
  8.    class Padre
  9.    {
  10.  
  11.    }
  12.  
  13.    class Hijo1 : Padre
  14.    {
  15.        public void Metodo();
  16.    }
  17.  
  18.    class Hijo2 : Padre
  19.    {
  20.        public void Metodo();
  21.    }
  22.  
  23.    class Hijo3 : Padre
  24.    {
  25.        public void Metodo();
  26.    }
  27.  
  28.    class Coleccion : HashSet<Padre>
  29.    {
  30.        public Coleccion()
  31.        {
  32.            this.Add(new Hijo1());
  33.            this.Add(new Hijo2());
  34.            this.Add(new Hijo3());
  35.        }
  36.  
  37.        public void Recorrer()
  38.        {
  39.            foreach (var hijo in this)
  40.            {
  41.                hijo.Metodo();
  42.            }
  43.        }
  44.    }
  45. }


Citar
'Project1.Padre' no contiene una definición de 'Metodo' ni se encontró ningún método de extensión 'Metodo' que acepte un primer argumento de tipo 'Project1.Padre' (¿falta una directiva de uso o una referencia de ensamblado?)


¿Como soluciono este problema?


En línea

mayofunk

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [C#] ¿falta una directiva de uso o una referencia de ensamblado?
« Respuesta #1 en: 27 Diciembre 2009, 22:47 pm »

Hola, lo que te dice es que el metodo Metodo(), no existe o al menos el (el "pc") no es capaz de verlo o encontrarlo.


No tengo nada a mano para comprobar, pero probablemente si haces :

Código:
class Padre
    {
         // En esta clase Padre, definire el metodo "Metodo", que en verdad no hace mucho :P
         public void Metodo()
         {
          // defino un numero entero
          int numeroEntero;
         
          // hago una asignacion simple.
          numeroEntero=1;

         }
    }

se solucionará.

o bien si haces :

Código:
class Hijo1 : Padre
    {
        // en vez de :
        // public void Metodo();
        public void Metodo()
        {
           //Cualquier cosa, desde una asignacion simple como la de antes, a "nada" como ahora.
        }
        // Osea, va sin el ';' y abriendo esas llaves.
    }

y haces lo mismo con los otros hijos.

Como consejo revisa bien la definicion de metodos y luego te metes con la Herencia ;)

Suerte y ánimo !


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: [C#] ¿falta una directiva de uso o una referencia de ensamblado?
« Respuesta #2 en: 28 Diciembre 2009, 00:13 am »

simple : declaraste un método sin implementación (y encima lo usás al método) ... la solución que planteó mayofunk es una -> implementación mínima y default...
o usar interface más que class ... (de paso tenés herencia múltiple siendo interfaces, a diferencia de clases ...)...


Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Project1
  7. {
  8.    interface Padre
  9.    {
  10. void Metodo();
  11.    }
  12.  
  13.    class Hijo1 : Padre
  14.    {
  15. public void Metodo()
  16. {
  17. Console.WriteLine("Padre : Implementacion de Hijo1");
  18. }
  19.    }
  20.  
  21.    class Hijo2 : Padre
  22.    {
  23. public void Metodo()
  24. {
  25. Console.WriteLine("Padre : Implementacion de Hijo2");
  26. }
  27.    }
  28.  
  29.    class Hijo3 : Padre
  30.    {
  31. public void Metodo()
  32. {
  33. Console.WriteLine("Padre : Implementacion de Hijo3");
  34. }
  35.    }
  36.  
  37.    class Coleccion : HashSet<Padre>
  38.    {
  39.        public Coleccion()
  40.        {
  41.            this.Add(new Hijo1());
  42.            this.Add(new Hijo2());
  43.            this.Add(new Hijo3());
  44.        }
  45.  
  46.        public void Recorrer()
  47.        {
  48.            foreach (var hijo in this)
  49.            {
  50.                hijo.Metodo();
  51.            }
  52.        }
  53.    }
  54. }
  55.  

además, todas esas clases comparten en común Metodo(), así que ... ¿por que no poner Padre como interface?  meterle Metodo ahí e implementarlo en las clases hijas (o, declarar padre como una clase, implementar un Metodo() básico y heredar, sin dar la obligación de implementarlo), algo así :

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Project1
  7. {
  8.    class Padre
  9.    {
  10. public virtual void Metodo()
  11. {
  12. Console.WriteLine("Padre: Implementacion default");
  13. }
  14.    }
  15.  
  16.  
  17.    class Hijo1 : Padre
  18.    {
  19.    }
  20.  
  21.    class Hijo2 : Padre
  22.    {
  23. public override void Metodo()
  24. {
  25. Console.WriteLine("Padre : Implementacion de Hijo2");
  26. }
  27.    }
  28.  
  29.    class Hijo3 : Padre
  30.    {
  31.    }
  32.  
  33.    class Coleccion : HashSet<Padre>
  34.    {
  35.        public Coleccion()
  36.        {
  37.            this.Add(new Hijo1());
  38.            this.Add(new Hijo2());
  39.            this.Add(new Hijo3());
  40.        }
  41.  
  42.        public void Recorrer()
  43.        {
  44.            foreach (var hijo in this)
  45.            {
  46.                hijo.Metodo();
  47.            }
  48.        }
  49.    }
  50. }
  51.  

Pasate por estas referencias :
Interfaces -> http://msdn.microsoft.com/es-es/library/ms173156.aspx
virtual -> http://msdn.microsoft.com/es-es/library/9fkccyh4.aspx

override -> http://msdn.microsoft.com/es-es/library/ebca9ah3.aspx
new (como modificador) -> http://msdn.microsoft.com/es-es/library/435f1dw2.aspx

Cuando usar new y override -> http://msdn.microsoft.com/es-es/library/ms173153.aspx y http://kementeus.wordpress.com/2007/08/28/clases-y-herencia-en-c-new-virtual-y-override/

Saludos ~
En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [C#] ¿falta una directiva de uso o una referencia de ensamblado?
« Respuesta #3 en: 28 Diciembre 2009, 20:54 pm »

En lo que hiciste aquí:

Código
  1. // defino un numero entero
  2.          int numeroEntero;
  3.  
  4.          // hago una asignacion simple.
  5.          numeroEntero=1;
  6.  

También te funciona así:

Código
  1. int numeroEntero = 1;
En línea

mayofunk

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [C#] ¿falta una directiva de uso o una referencia de ensamblado?
« Respuesta #4 en: 30 Diciembre 2009, 22:11 pm »

Claro quesi ! lo hice así para mostrar más lineas :P

Salu2.
En línea

Siuto
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.587


Que puedo decir??


Ver Perfil WWW
Re: [C#] ¿falta una directiva de uso o una referencia de ensamblado?
« Respuesta #5 en: 2 Enero 2010, 18:48 pm »

Bueno gracias por el info y links, mañana salgo de vacaciones asi que cuando vuelvo leo todo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Saltarse directiva local
Seguridad
d3xf4ult 0 3,677 Último mensaje 22 Enero 2012, 19:39 pm
por d3xf4ult
Compilacion: Fase de compilado y de ensamblado
Programación C/C++
Jomad205 2 3,448 Último mensaje 25 Noviembre 2012, 11:51 am
por Jomad205
¿Que es exactamente la directiva .x86 de MASM?
ASM
Usuario887 4 3,363 Último mensaje 22 Febrero 2021, 15:33 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines