Type.GetDefaultMembers Type.GetDefaultMembers Type.GetDefaultMembers Type.GetDefaultMembers Method

Definition

Sucht nach den für den aktuellen Type definierten Membern, deren DefaultMemberAttribute festgelegt ist.Searches for the members defined for the current Type whose DefaultMemberAttribute is set.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetDefaultMembers();
public virtual System.Reflection.MemberInfo[] GetDefaultMembers ();
abstract member GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
override this.GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
Public Overridable Function GetDefaultMembers () As MemberInfo()

Gibt zurück

Ein Array von MemberInfo-Objekten, die alle Standardmember des aktuellen Type darstellen.An array of MemberInfo objects representing all default members of the current Type.

- oder --or- Ein leeres Array vom MemberInfo-Typ, wenn der aktuelle Type keine Standardmember besitzt.An empty array of type MemberInfo, if the current Type does not have default members.

Implementiert

Beispiele

Im folgenden Beispiel werden die Standardelement Informationen von MyClass abgerufen und die Standardmember angezeigt.The following example obtains the default member information of MyClass and displays the default members.

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

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);
        }
    }
}
Imports System.Reflection
Imports System.IO

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

    Public Sub Name(ByVal s As String)
    End Sub

    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
End Class

Hinweise

Die GetDefaultMembers -Methode gibt keine Member in einer bestimmten Reihenfolge zurück, z. b. alphabetisch oder Deklaration.The GetDefaultMembers method does not return members in a particular order, such as alphabetical or declaration order. Der Code darf nicht von der Reihenfolge abhängen, in der Elemente zurückgegeben werden, da diese Reihenfolge variiert.Your code must not depend on the order in which members are returned, because that order varies.

Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.This method can be overridden by a derived class.

Member enthalten Eigenschaften, Methoden, Felder, Ereignisse usw.Members include properties, methods, fields, events, and so on.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese MemberInfo Methode die Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the MemberInfo objects with the type parameters replaced by the appropriate type arguments. Wenn z. b. C<T> die-Klasse P eine-Eigenschaft aufweist, die zurück C# gibtProperty P As Integer T, gibt der Aufruf GetDefaultMembers von C<int> in (in Visual Basic) zurück int P .For example, if class C<T> has a property P that returns T, calling GetDefaultMembers on C<int> returns int P in C# (Property P As Integer in Visual Basic).

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Member der Klassen Einschränkung oder die Member Object von, wenn keine Klassen Einschränkung vorhanden ist.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the members of the class constraint, or the members of Object if there is no class constraint.

Gilt für:

Siehe auch