Exporter (0) Imprimer
Développer tout

MissingMemberException, classe

Mise à jour : novembre 2007

Exception levée lors d'une tentative d'accès dynamique à un membre de classe qui n'existe pas.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

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

Une erreur de compilation est normalement générée lorsque le code tente d'accéder à un membre inexistant d'une classe. MissingMemberException est conçu pour gérer les cas où un champ ou une méthode est soit supprimé, soit renommé dans un assembly et où la modification ne se reflète pas dans un deuxième assembly. Au moment de l'exécution, MissingMemberException sera levé lorsque le code du deuxième assembly tente d'accéder au membre manquant dans le premier.

MissingMemberException est la classe de base pour MissingFieldException et MissingMethodException. En général, il est préférable d'utiliser l'une des classes dérivées de MissingMemberException pour indiquer plus précisément la nature exacte de l'erreur. Levez MissingMemberException si vous êtes uniquement intéressé par la capture du cas général d'une erreur de membre manquant.

MissingMemberException utilise le HRESULT COR_E_MISSINGMEMBER dont la valeur est 0x80131512.

Pour obtenir une liste des valeurs initiales des propriétés d'une instance de MissingMemberException, consultez les constructeurs MissingMemberException.

Cet exemple montre ce qui se passe lorsque vous essayez d'utiliser la réflexion pour appeler une méthode et accéder à un champ qui n'existent pas. L'application récupère en interceptant MissingMethodException, MissingFieldException et 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 example 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

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft