Freigeben über


Type.GetDefaultMembers-Methode

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

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

Syntax

'Declaration
Public Overridable Function GetDefaultMembers As MemberInfo()
'Usage
Dim instance As Type
Dim returnValue As MemberInfo()

returnValue = instance.GetDefaultMembers
public virtual MemberInfo[] GetDefaultMembers ()
public:
virtual array<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.

Hinweise

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.

Beispiel

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

Imports System
Imports System.Reflection
Imports System.IO
Imports Microsoft.VisualBasic

<DefaultMemberAttribute("Age")> Public Class [MyClass]

    Public Sub Name(ByVal s As String)
    End Sub 'Name

    Public ReadOnly Property Age() As Integer
        Get
            Return 20
        End Get
    End Property

    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType([MyClass])
            Dim memberInfoArray As MemberInfo() = myType.GetDefaultMembers()
            If memberInfoArray.Length > 0 Then
                Dim memberInfoObj As MemberInfo
                For Each memberInfoObj In memberInfoArray
                    Console.WriteLine("The default member name is: " + memberInfoObj.ToString())
                Next memberInfoObj
            Else
                Console.WriteLine("No default members are available.")
            End If
        Catch e As InvalidOperationException
            Console.WriteLine("InvalidOperationException: " + e.Message)
        Catch e As IOException
            Console.WriteLine("IOException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub 'Main
End Class '[MyClass]
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);
        }
    }
}
using namespace System;
using namespace System::Reflection;
using namespace System::IO;

[DefaultMemberAttribute("Age")]
public ref class MyClass
{
public:
   void Name( String^ s ){}


   property int Age 
   {
      int get()
      {
         return 20;
      }

   }

};

int main()
{
   try
   {
      Type^ myType = MyClass::typeid;
      array<MemberInfo^>^memberInfoArray = myType->GetDefaultMembers();
      if ( memberInfoArray->Length > 0 )
      {
         System::Collections::IEnumerator^ myEnum = memberInfoArray->GetEnumerator();
         while ( myEnum->MoveNext() )
         {
            MemberInfo^ memberInfoObj = safe_cast<MemberInfo^>(myEnum->Current);
            Console::WriteLine( "The default member name is: {0}", memberInfoObj );
         }
      }
      else
      {
         Console::WriteLine( "No default members are available." );
      }
   }
   catch ( InvalidOperationException^ e ) 
   {
      Console::WriteLine( "InvalidOperationException: {0}", e->Message );
   }
   catch ( IOException^ e ) 
   {
      Console::WriteLine( "IOException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", 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

Plattformen

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.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Type-Klasse
Type-Member
System-Namespace
MemberInfo
DefaultMemberAttribute
GetMember
GetMembers
FindMembers