MemberInfo.DeclaringType Proprietà

Definizione

Ottiene la classe che dichiara questo membro.

public abstract Type DeclaringType { get; }
public abstract Type? DeclaringType { get; }

Valore della proprietà

Oggetto Type per la classe che dichiara questo membro.

Implementazioni

Esempio

Nell'esempio seguente viene definita un'interfaccia, , IValuecon un singolo membro, GetValue. Definisce anche quattro classi: A, una classe di base che implementa l'interfaccia; B, che eredita A da e nasconde l'implementazione di GetValue dall'implementazione IValue della classe base; C, che eredita semplicemente da A; e D, che eredita da A e esegue l'override GetValue del relativo metodo. L'esempio recupera quindi un MemberInfo oggetto per ogni membro del tipo (inclusi i membri ereditati da Object) e visualizza il valore della relativa DeclaringType proprietà.

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

Si noti che il tipo dichiarante di è , che include due GetValue metodi, uno dichiarato da e uno da BA e che il tipo dichiarante di D.GetValue è D.BAA.GetValue

Nota

DeclaringType restituisce solo i nomi dei membri e i nomi dei tipi dichiarati. Per restituire i nomi dei membri con i prototipi, chiamare MemberInfo.ToString.

Commenti

La DeclaringType proprietà recupera un riferimento all'oggetto per il Type tipo che dichiara questo membro. Un membro di un tipo viene dichiarato dal tipo o ereditato da un tipo di base, pertanto l'oggetto Type restituito dalla DeclaringType proprietà potrebbe non essere uguale Type all'oggetto usato per ottenere l'oggetto corrente MemberInfo .

  • Se l'oggetto Type da cui è stato ottenuto questo oggetto non ha dichiarato questo MemberInfo membro, la DeclaringType proprietà rappresenta uno dei relativi tipi di base.

  • Se l'oggetto MemberInfo è un membro globale, ovvero se è stato ottenuto dal Module.GetMethods metodo, che restituisce metodi globali in un modulo, il restituito DeclaringType sarà null.

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0