Auf Englisch lesen

Teilen über


Type.GetDefaultMembers Methode

Definition

Sucht nach den für den aktuellen Type definierten Membern, deren DefaultMemberAttribute festgelegt ist.

C#
public virtual System.Reflection.MemberInfo[] GetDefaultMembers();

Gibt zurück

Ein Array von MemberInfo-Objekten, die alle Standardmember des aktuellen Type darstellen.

- oder -

Ein leeres Array vom MemberInfo-Typ, wenn der aktuelle Type keine Standardmember besitzt.

Implementiert

Beispiele

Im folgenden Beispiel werden die Standardmemberinformationen von MyClass abgerufen und die Standardmember angezeigt.

C#
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);
        }
    }
}

Hinweise

Die GetDefaultMembers -Methode gibt keine Member in einer bestimmten Reihenfolge zurück, z. B. alphabetisch oder Deklarationsreihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Member zurückgegeben werden, da diese Reihenfolge variiert.

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.

Member umfassen Eigenschaften, Methoden, Felder, Ereignisse usw.

Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn sie einen Typ reflektieren.

Memberart Statisch Nicht statisch
Konstruktor Nein Nein
Feld Nein Ja. Ein Feld wird immer nach Name und Signatur ausgeblendet.
Ereignis Nicht zutreffend Die allgemeine Typsystemregel ist, dass die Vererbung mit der der Methoden identisch ist, die die -Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.
Methode Nein Ja. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Name oder nach Name und Signatur ausblenden sein.
Geschachtelter Typ Nein Nein
Eigenschaft Nicht zutreffend Die allgemeine Typsystemregel ist, dass die Vererbung mit der der Methoden identisch ist, die die -Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.
  1. Hide-by-name-and-signature berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwalteter Aufrufkonventionen. Dies ist ein binärer Vergleich.

  2. Für die Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet. Wenn Sie über eine Eigenschaft mit einem get- und einem set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Wenn der aktuelle einen konstruierten generischen Type Typ darstellt, gibt diese Methode die MemberInfo Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden. Wenn z. B. die -Klasse C<T> über eine -Eigenschaft P verfügt, die zurückgibtT, wird bei C<int> Rückgaben int P in C# (Property P As Integer in Visual Basic) aufgerufenGetDefaultMembers.

Wenn der aktuelle einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, durchsucht diese Methode die Member der Klasseneinschränkung oder die Member von Object , wenn keine Klasseneinschränkung vorhanden ist.

Gilt für:

Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Weitere Informationen