MemberInfo.DeclaringType Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera klasę, która deklaruje ten element członkowski.
public:
abstract property Type ^ DeclaringType { Type ^ get(); };
public abstract Type DeclaringType { get; }
public abstract Type? DeclaringType { get; }
member this.DeclaringType : Type
Public MustOverride ReadOnly Property DeclaringType As Type
Wartość właściwości
Type
Obiekt klasy, która deklaruje ten element członkowski.
Implementuje
Przykłady
W poniższym przykładzie zdefiniowano interfejs , IValue
z jednym elementem członkowskim GetValue
. Definiuje również cztery klasy: A
, klasę bazową, która implementuje IValue
interfejs; B
, który dziedziczy A
i ukrywa jego implementację GetValue
z implementacji klasy bazowej; C
, który po prostu dziedziczy z A
klasy ; i D
, który dziedziczy z A
i zastępuje jego GetValue
metodę. W tym przykładzie pobrano MemberInfo obiekt dla każdego elementu członkowskiego typu (w tym składowych dziedziczone z Object) i wyświetla wartość jego DeclaringType właściwości.
using System;
using System.Reflection;
interface IValue
{
int GetValue() ;
};
class A : IValue
{
public virtual int GetValue()
{
return 0;
}
};
class B : A
{
public new int GetValue()
{
return 0;
}
};
class C : A
{ };
class D : A
{
public override int GetValue()
{
return 0;
}
}
public class Example
{
public static void Main()
{
// Get members of IValue interface.
ShowMembersAndDeclaringTypes(typeof(IValue));
Console.WriteLine();
ShowMembersAndDeclaringTypes(typeof(A));
Console.WriteLine();
ShowMembersAndDeclaringTypes(typeof(B));
Console.WriteLine();
ShowMembersAndDeclaringTypes(typeof(C));
Console.WriteLine();
ShowMembersAndDeclaringTypes(typeof(D));
Console.WriteLine();
}
private static void ShowMembersAndDeclaringTypes(Type t)
{
MemberInfo[] members = t.GetMembers();
Console.WriteLine("{0} Members: ", t.Name);
foreach (var member in members)
Console.WriteLine(" {0}, Declaring type: {1}",
member.Name, member.DeclaringType.Name);
}
}
// The example displays the following output:
// IValue Members:
// GetValue, Declaring type: IValue
//
// A Members:
// GetValue, Declaring type: A
// ToString, Declaring type: Object
// Equals, Declaring type: Object
// GetHashCode, Declaring type: Object
// GetType, Declaring type: Object
// .ctor, Declaring type: A
//
// B Members:
// GetValue, Declaring type: B
// GetValue, Declaring type: A
// ToString, Declaring type: Object
// Equals, Declaring type: Object
// GetHashCode, Declaring type: Object
// GetType, Declaring type: Object
// .ctor, Declaring type: B
//
// C Members:
// GetValue, Declaring type: A
// ToString, Declaring type: Object
// Equals, Declaring type: Object
// GetHashCode, Declaring type: Object
// GetType, Declaring type: Object
// .ctor, Declaring type: C
//
// D Members:
// GetValue, Declaring type: D
// ToString, Declaring type: Object
// Equals, Declaring type: Object
// GetHashCode, Declaring type: Object
// GetType, Declaring type: Object
// .ctor, Declaring type: D
Imports System.Reflection
Interface IValue
Function GetValue() As Integer
End Interface
Class A : Implements IValue
Public Overridable Function GetValue() As Integer _
Implements IValue.GetValue
Return 0
End Function
End Class
Class B : Inherits A
Public Shadows Function GetValue() As Integer
Return 0
End Function
End Class
Class C : Inherits A
End Class
Class D : Inherits A
Public Overrides Function GetValue() As Integer
Return 0
End Function
End Class
Public Module Example
Public Sub Main()
' Get members of IValue interface.
ShowMembersAndDeclaringTypes(GetType(IValue))
Console.WriteLine()
ShowMembersAndDeclaringTypes(GetType(A))
Console.WriteLine()
ShowMembersAndDeclaringTypes(GetType(B))
Console.WriteLine()
ShowMembersAndDeclaringTypes(GetType(C))
Console.WriteLine()
ShowMembersAndDeclaringTypes(GetType(D))
Console.WriteLine()
End Sub
Private Sub ShowMembersAndDeclaringTypes(t As Type)
Dim members() As MemberInfo = t.GetMembers()
Console.WriteLine("{0} Members: ", t.Name)
For Each member In members
Console.WriteLine(" {0}, Declaring type: {1}",
member.Name, member.DeclaringType.Name)
Next
End Sub
End Module
' The example displays the following output:
' IValue Members:
' GetValue, Declaring type: IValue
'
' A Members:
' GetValue, Declaring type: A
' ToString, Declaring type: Object
' Equals, Declaring type: Object
' GetHashCode, Declaring type: Object
' GetType, Declaring type: Object
' .ctor, Declaring type: A
'
' B Members:
' GetValue, Declaring type: B
' GetValue, Declaring type: A
' ToString, Declaring type: Object
' Equals, Declaring type: Object
' GetHashCode, Declaring type: Object
' GetType, Declaring type: Object
' .ctor, Declaring type: B
'
' C Members:
' GetValue, Declaring type: A
' ToString, Declaring type: Object
' Equals, Declaring type: Object
' GetHashCode, Declaring type: Object
' GetType, Declaring type: Object
' .ctor, Declaring type: C
'
' D Members:
' GetValue, Declaring type: D
' ToString, Declaring type: Object
' Equals, Declaring type: Object
' GetHashCode, Declaring type: Object
' GetType, Declaring type: Object
' .ctor, Declaring type: D
Należy pamiętać, że deklarowany typ to , który zawiera dwie GetValue
metody, jeden zadeklarowany przez i jeden według B
A
, i że deklarowany typ D.GetValue
to D
.B
A
A.GetValue
Uwaga
DeclaringType
Zwraca tylko nazwy elementów członkowskich i nazwy ich typów deklaraujących. Aby zwrócić nazwy członków z ich prototypami, wywołaj metodę MemberInfo.ToString
.
Uwagi
Właściwość DeclaringType pobiera odwołanie do Type obiektu dla typu, który deklaruje ten element członkowski. Element członkowski typu jest zadeklarowany przez typ lub dziedziczony z typu podstawowego, więc Type
obiekt zwrócony przez DeclaringType właściwość może nie być taki sam jak Type
obiekt używany do uzyskania bieżącego MemberInfo obiektu.
Type
Jeśli obiekt, z któregoMemberInfo
ten obiekt został uzyskany, nie zadeklarował tego elementu członkowskiego, DeclaringType właściwość będzie reprezentować jeden z jego typów bazowych.MemberInfo
Jeśli obiekt jest elementem globalnym (czyli jeśli został uzyskany z Module.GetMethods metody, która zwraca metody globalne w module), zwracany DeclaringType będzie .null