MemberInfo.DeclaringType Właściwość

Definicja

Pobiera klasę, która deklaruje ten element członkowski.

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

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 , IValuez 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 Aklasy ; 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.

C#
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

Należy pamiętać, że deklarowany typ to , który zawiera dwie GetValue metody, jeden zadeklarowany przez i jeden według BA , i że deklarowany typ D.GetValue to D.BAA.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órego MemberInfo 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

Dotyczy

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