MemberInfo.DeclaringType 屬性

定義

取得宣告這個成員的類別。

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

屬性值

宣告這個成員之類別的 Type 物件。

實作

範例

下列範例會定義具有單一成員 GetValue 的介面 IValue 。 它也會定義四個類別: A ,實作 介面的 IValue 基類; B 繼承自 A ,並從基類實作中隱藏其 GetValue 實作;直接繼承自 A ; C 以及 D ,其繼承自 A 並覆寫其 GetValue 方法。 然後,此範例會 MemberInfo 擷取類型每個成員的物件, (包括繼承自 Object) 的成員,並顯示其 DeclaringType 屬性的值。

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

請注意,的宣告類型 A.GetValueA ,其中包含 BGetValue 個方法,一個由 A 和 一個 宣告 B ,而 宣告型別 D.GetValueD

備註

DeclaringType 只會傳回成員名稱和其宣告型別的名稱。 若要傳回成員名稱及其原型,請呼叫 MemberInfo.ToString

備註

屬性 DeclaringType 會擷取宣告這個成員之型別之 物件的參考 Type 。 型別的成員是由型別所宣告或繼承自基底型別,因此 Type 屬性傳 DeclaringType 回的物件可能與用來取得目前 MemberInfo 物件的物件不同 Type

  • Type如果取得這個 MemberInfo 物件的物件未宣告此成員,則 DeclaringType 屬性將代表其基底類型之一。

  • MemberInfo如果 物件是全域成員 (,也就是說,如果從 Module.GetMethods 方法取得,這會傳回模組上的全域方法) ,則傳 DeclaringType 回的 會是 null

適用於

產品 版本
.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