Error: "No se puede hacer referencia a un miembro de instancia de una clase" mensaje de error se produce cuando un ensamblado que utiliza un método Enum y clases del mismo nombre

Seleccione idioma Seleccione idioma
Id. de artículo: 814602 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando tiene un ensamblado que utiliza un método de Enum y un método de clase y ambos métodos tienen el mismo nombre, puede recibir el siguiente mensaje de error:
No se puede hacer referencia a un miembro de instancia de una clase desde dentro de un método compartido o el inicializador de miembro compartido sin una instancia explícita de la clase.

Causa

Recibe este mensaje de error cuando se hace referencia a Enum en los métodos compartidos de la clase . El compilador incorrectamente enlaza con el método de instancia de la clase . Se supone que el compilador para enlazar a la enumeración .

Solución

Para evitar este problema, consulte Enum con un nombre completo, como en el ejemplo siguiente:

Namespace.Enum.MemberName

Estado

Microsoft ha confirmado que se trata de un error de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Pasos para reproducir el problema

  1. Inicie Microsoft Visual Studio .NET o Microsoft Visual Studio 2005.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En la sección Tipos de proyecto , haga clic en Proyectos de Visual Basic .

    Nota En Visual Studio 2005, haga clic en Visual Basic bajo Tipos de proyecto .
  4. En la sección plantillas , haga clic en Aplicación de consola , el nombre del proyecto TestBinding y a continuación, haga clic en Aceptar .

    De forma predeterminada, se crea Module1.vb.
  5. Reemplace el código existente en Module1.vb con el código siguiente:
    Namespace TestBinding
    
       ' Declare an Enum.
       Enum color As Integer
          red = 200
       End Enum
    
       Class TestClass
          'Declare a method that has the same name 
          ' as that of enum.
          Public Function color() As color
             Return color.red + 50
          End Function
    
          ' Try to access the Enum from this shared method.
          Public Shared Sub MyTestMethod()
             'Refer to Enum. 
             Console.WriteLine(color.red)
          End Sub
       End Class
    
       Module Module1
          Sub main()
             ' Call the shared method.
             TestClass.MyTestMethod()
          End Sub
       End Module
    
    End Namespace
  6. En el menú Depurar , haga clic en iniciar para ejecutar el proyecto.

    Recibirá el mensaje de error que se describe en la sección "Síntomas" de este artículo.
  7. En el código MyTestMethod, reemplace
    color.red
    - con -
    TestBinding.color.red
  8. En el menú Depurar , haga clic en iniciar para ejecutar el proyecto nuevo.

    Se ha resuelto el problema.

Referencias

Para obtener más información sobre palabras clave compartidas en Visual Basic.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
308371Cómo crear y utilizar miembros compartidos mediante Visual Basic .NET

Propiedades

Id. de artículo: 814602 - Última revisión: jueves, 27 de febrero de 2014 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbvs2002sp1sweep kberrmsg kbcompiler kbbug KB814602 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 814602

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com