GetDefaultMembers, méthode
TOC
Réduire la table des matières
Développer la table des matières

Type.GetDefaultMembers, méthode

Mise à jour : novembre 2007

Recherche les membres définis pour le Type en cours dont le DefaultMemberAttribute est défini.

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

public virtual MemberInfo[] GetDefaultMembers()
public MemberInfo[] GetDefaultMembers()
public function GetDefaultMembers() : MemberInfo[]

Valeur de retour

Type : System.Reflection.MemberInfo[]
Tableau d'objets MemberInfo représentant tous les membres par défaut du Type en cours.
– ou –
Tableau vide du type MemberInfo si le Type en cours n'a pas les membres par défaut.

Implémentations

_Type.GetDefaultMembers()

La méthode GetDefaultMembers ne retourne pas les membres dans un ordre particulier, tel que l'ordre alphabétique ou l'ordre de déclaration. Votre code ne doit pas être fonction de l'ordre dans lequel les membres sont retournés, car cet ordre varie.

Cette méthode peut être substituée par une classe dérivée.

Parmi les membres figurent des propriétés, méthodes, champs, événements, etc.

Le tableau suivant indique les membres d'une classe de base qui sont retournés par les méthodes Get lors de la réflexion sur un type.

Type de membre

Statique

Non statique

Constructeur

Non

Non

Champ

Non

Oui. Un champ est toujours masqué-par-nom-et-signature.

Événement

Non applicable

La règle du système de type commun (CTS, Common Type System) est que l'héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.

Méthode

Non

Oui. Une méthode (à la fois virtuelle et non virtuelle) peut être masquée par nom ou masquée-par-nom-et-signature.

De type imbriqué

Non

Non

Propriété

Non applicable

La règle du système de type commun (CTS, Common Type System) est que l'héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.

  1. Masquer-par-nom-et-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d'appel non managées. Il s'agit d'une comparaison binaire.

  2. Pour la réflexion, les propriétés et événements sont masqués-par-nom-et-signature. Si une propriété a un accesseur get et set dans la classe de base, mais si la classe dérivée n'a qu'un accesseur get, la propriété de la classe dérivée masque la propriété de la classe de base et vous ne pourrez pas accéder à l'accesseur Set sur la classe de base.

  3. Les attributs personnalisés ne font pas partie du système de type commun (CTS, Common Type System).

Si le Type actuel représente un type générique construit, cette méthode retourne les objets MemberInfo avec les paramètres de type remplacés par les arguments de type appropriés. Par exemple, si la classe C<T> possède une propriété P qui retourne T, appeler GetDefaultMembers sur C<int> retourne int P en C# (Property P As Integer en Visual Basic).

Si le Type actuel représente un paramètre de type dans la définition d'un type ou d'une méthode générique, cette méthode recherche les membres de la contrainte de classe, ou les membres de Object, s'il n'existe aucune contrainte de classe.

L'exemple suivant obtient les informations se rapportant aux membres par défaut de MyClass et affiche les membres par défaut.


using System;
using System.Reflection;
using System.IO;

[DefaultMemberAttribute("Age")]   
public class MyClass
{
    public void Name(String s) {}
    public int Age
    {
        get
        {
            return 20;
        }
    }
    public static void Main()
    {
        try
        {
            Type  myType = typeof(MyClass);
            MemberInfo[] memberInfoArray = myType.GetDefaultMembers();
            if (memberInfoArray.Length > 0)
            {
                foreach(MemberInfo memberInfoObj in memberInfoArray)
                {
                    Console.WriteLine("The default member name is: " + memberInfoObj.ToString());
                }
            }
            else
            {
                Console.WriteLine("No default members are available."); 
            }
        }
        catch(InvalidOperationException e)
        {
            Console.WriteLine("InvalidOperationException: " + e.Message);
        }
        catch(IOException e)
        {
            Console.WriteLine("IOException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}


import System.*;
import System.Reflection.*;
import System.IO.*;

/** @attribute DefaultMemberAttribute("Age")
 */
public class MyClass
{
    public void Name(String s)
    {
    } //Name

    /** @property 
     */
    public int get_Age()
    {
        return 20;
    } //get_Age

    public static void main(String[] args)
    {
        try {
            Type myType = MyClass.class.ToType();
            MemberInfo memberInfoArray[] = myType.GetDefaultMembers();
            if (memberInfoArray.length > 0) {
                for (int iCtr = 0; iCtr < memberInfoArray.length; iCtr++) {
                    MemberInfo memberInfoObj = memberInfoArray[iCtr];
                    Console.WriteLine("The default member name is: "
                        + memberInfoObj.ToString());
                }
            }
            else {
                Console.WriteLine("No default members are available.");
            }
        }
        catch (InvalidOperationException e) {
            Console.WriteLine("InvalidOperationException: " + e.get_Message());
        }
        catch (IOException e) {
            Console.WriteLine("IOException: " + e.get_Message());
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception: " + e.get_Message());
        }
    } //main
} //MyClass


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:
© 2016 Microsoft