MemberInfo.DeclaringType Proprietà

Definizione

Ottiene la classe che dichiara questo membro.Gets the class that declares this member.

public:
 abstract property Type ^ DeclaringType { Type ^ get(); };
public abstract Type DeclaringType { get; }
member this.DeclaringType : Type
Public MustOverride ReadOnly Property DeclaringType As Type

Valore della proprietà

Oggetto Type per la classe che dichiara questo membro.The Type object for the class that declares this member.

Implementazioni

Esempi

Nell'esempio seguente viene definita un'interfaccia IValue,, con un singolo GetValuemembro.The following example defines an interface, IValue, with a single member, GetValue. Definisce inoltre quattro classi: A, una classe di base che implementa l' IValue interfaccia; , che eredita da A e nasconde l'implementazione di dall' GetValue implementazione della classe di base; B D A GetValue , che eredita semplicemente da A; e, che eredita da ed esegue l'override del relativo metodo. CIt also defines four classes: A, a base class that implements the IValue interface; B, which inherits from A and hides its implementation of GetValue from the base class implementation; C, which simply inherits from A; and D, which inherits from A and overrides its GetValue method. Nell'esempio viene quindi recuperato MemberInfo un oggetto per ogni membro del tipo (inclusi i membri ereditati da Object) e viene visualizzato il DeclaringType valore della relativa proprietà.The example then retrieves a MemberInfo object for each member of the type (including members inherited from Object) and displays the value of its DeclaringType property.

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

Si noti che il tipo dichiarante Adi A.GetValue è B , che GetValue include due metodi, uno A dichiarato da e Buno per, e che il tipo dichiarante di D.GetValue è D.Note that the declaring type of A.GetValue is A, that B includes two GetValue methods, one declared by A and one by B, and that the declaring type of D.GetValue is D.

Nota

DeclaringTyperestituisce solo i nomi dei membri e i nomi dei tipi dichiaranti.DeclaringType returns only the member names and the names of their declaring types. Per restituire i nomi dei membri con i relativi prototipi MemberInfo.ToString, chiamare.To return the member names with their prototypes, call MemberInfo.ToString.

Commenti

La DeclaringType proprietà recupera un riferimento Type all'oggetto per il tipo che dichiara il membro.The DeclaringType property retrieves a reference to the Type object for the type that declares this member. Un membro di un tipo è dichiarato dal tipo o ereditato da un tipo di base Type , pertanto l'oggetto restituito DeclaringType dalla proprietà potrebbe non Type corrispondere all'oggetto utilizzato per ottenere l'oggetto corrente MemberInfo .A member of a type is either declared by the type or inherited from a base type, so the Type object returned by the DeclaringType property might not be the same as the Type object used to obtain the current MemberInfo object.

  • Se l' Type oggetto da cui è MemberInfo stato ottenuto questo oggetto non dichiara questo membro, la DeclaringType proprietà rappresenterà uno dei relativi tipi di base.If the Type object from which this MemberInfo object was obtained did not declare this member, the DeclaringType property will represent one of its base types.

  • Se l' MemberInfo oggetto è un membro globale, ovvero se è stato ottenuto Module.GetMethods dal metodo, che restituisce metodi globali su un modulo null, il valore restituito DeclaringType sarà.If the MemberInfo object is a global member (that is, if it was obtained from the Module.GetMethods method, which returns global methods on a module), the returned DeclaringType will be null.

Si applica a