Exportar (0) Imprimir
Expandir todo

MissingMemberException (Clase)

Excepción que se produce cuando se intenta tener acceso dinámicamente a un miembro de la clase que no existe.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class MissingMemberException : MemberAccessException, ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class MissingMemberException extends MemberAccessException implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class MissingMemberException extends MemberAccessException implements ISerializable

Normalmente se genera un error de compilación si el código intenta tener acceso a un miembro inexistente de una clase. MissingMemberException está diseñada para los casos en que se elimina un campo o un método o cambia de nombre en un ensamblado y el cambio no se refleja en un ensamblado. En tiempo de ejecución, MissingMemberException se produce cuando el código del segundo ensamblado intenta tener acceso al miembro que falta en el primer ensamblado.

MissingMemberException es la clase base para MissingFieldException y MissingMethodException. Para indicar con mayor precisión la naturaleza del error, en general, se recomienda utilizar una de las clases derivadas de MissingMemberException. Hay que producir MissingMemberException si sólo interesa detectar un caso general de error porque falta un miembro.

MissingMemberException utiliza HRESULT COR_E_MISSINGMEMBER, que tiene el valor 0x80131512.

Para obtener una lista con los valores de propiedad iniciales de una instancia de MissingMemberException, vea los constructores MissingMemberException.

En este ejemplo se muestra lo que ocurre cuando se intenta utilizar la reflexión para llamar a un método inexistente u obtener acceso a un campo inexistente. La aplicación se recupera detectando MissingMethodException, MissingFieldException y MissingMemberException.

using System;
using System.Reflection;

public class App 
{
    public static void Main() 
    { 
        
        try 
        {
            // Attempt to call a static DoSomething method defined in the App class.
            // However, because the App class does not define this field, 
            // a MissingFieldException is thrown.
            typeof(App).InvokeMember("DoSomething", BindingFlags.Static | 
                BindingFlags.InvokeMethod, null, null, null);
        }
        catch (MissingMethodException e) 
        {
            // Show the user that the DoSomething method cannot be called.
            Console.WriteLine("Unable to call the DoSomething method: {0}", e.Message);
        }

        try 
        {
            // Attempt to access a static AField field defined in the App class.
            // However, because the App class does not define this field, 
            // a MissingFieldException is thrown.
            typeof(App).InvokeMember("AField", BindingFlags.Static | BindingFlags.SetField, 
                null, null, new Object[] { 5 });
        }
        catch (MissingFieldException e) 
        {
         // Show the user that the AField field cannot be accessed.
         Console.WriteLine("Unable to access the AField field: {0}", e.Message);
        }

        try 
        {
            // Attempt to access a static AnotherField field defined in the App class.
            // However, because the App class does not define this field, 
            // a MissingFieldException is thrown.
            typeof(App).InvokeMember("AnotherField", BindingFlags.Static | 
                BindingFlags.GetField, null, null, null);
        }        
        catch (MissingMemberException e) 
        {
         // Notice that this code is catching MissingMemberException which is the  
         // base class of MissingMethodException and MissingFieldException.
         // Show the user that the AnotherField field cannot be accessed.
         Console.WriteLine("Unable to access the AnotherField field: {0}", e.Message);
        }
    }       
}
// This code produces the following output.
//
// Unable to call the DoSomething method: Method 'App.DoSomething' not found.
// Unable to access the AField field: Field 'App.AField' not found.
// Unable to access the AnotherField field: Field 'App.AnotherField' not found.

System.Object
   System.Exception
     System.SystemException
       System.MemberAccessException
        System.MissingMemberException
           System.MissingFieldException
           System.MissingMethodException

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft