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. |
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.
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.
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