Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren

Type.GetDefaultMembers-Methode

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

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

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

Rückgabewert

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.

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.

Zu den Membern gehören Eigenschaften, Methoden, Felder, Ereignisse usw.

In der folgenden Tabelle sind die Member einer Basisklasse aufgeführt, die bei der Reflektion eines Typs von den Get-Methoden zurückgegeben werden.

Membertyp

Statisch

Nicht statisch

Konstruktor

Nein

Nein

Feld

Nein

Ja. Felder sind immer nach Namen und Signatur verdeckt.

Ereignis

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

Methode

Nein

Ja. Eine Methode, virtuell oder nicht virtuell, kann nach Namen oder nach Namen und Signatur verdeckt sein.

Geschachtelter Typ

Nein

Nein

Eigenschaft

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

  1. Beim Verdecken nach Namen und Signatur werden alle Teile der Signatur berücksichtigt. Dies schließt benutzerdefinierte Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen ein. Dies ist ein binärer Vergleich.

  2. Die Reflektion behandelt Eigenschaften und Ereignisse als nach Namen und Signatur verdeckt. Wenn eine Eigenschaft in einer Basisklasse sowohl einen Get-Accessor als auch einen Set-Accessor, in einer abgeleiteten Klasse hingegen nur einen Get-Accessor besitzt, verdeckt die Eigenschaft der abgeleiteten Klasse die Eigenschaft der Basisklasse, und der Set-Accessor der Basisklasse ist nicht mehr zugänglich.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die MemberInfo-Objekte zurück, wobei die Typparameter durch die entsprechenden Typargumente ersetzt wurden. Wenn die C<T>-Klasse z. B. die P-Eigenschaft besitzt, die T zurückgibt, gibt ein Aufruf von GetDefaultMembers mit C<int>int P in C# (Property P As Integer in Visual Basic) zurück.

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

Im folgenden Beispiel werden die Informationen zu Standardmembern von MyClass abgerufen und die Standardmember angezeigt.


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 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft