英語で読む

次の方法で共有


MemberInfo.DeclaringType プロパティ

定義

このメンバーを宣言するクラスを取得します。

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

プロパティ値

このメンバーを宣言するクラスの Type オブジェクト。

実装

次の例では、 IValue1 つのメンバー GetValueである インターフェイス を定義します。 また、A4 つのクラス (インターフェイスを実装IValueする基底クラス) をB定義します。これは、 を継承Aし、基底クラスのGetValue実装Cからの実装を非表示にします。これは、単に を継承しD、そのGetValueメソッドをAA継承してオーバーライドします。 次に、型の各メンバー (からObject継承されたメンバーを含む) のオブジェクトを取得MemberInfoし、その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.GetValueは でAB、2 つのGetValueメソッド (1 つは によって宣言され、もう 1 つは によってAB宣言されます) が含まれており、 の宣言型D.GetValueは であることにD注意してください。

注意

DeclaringType は、メンバー名とその宣言型の名前のみを返します。 プロトタイプを含むメンバー名を返すには、 を呼び出します MemberInfo.ToString

注釈

プロパティは DeclaringType 、このメンバーを宣言する型の Type オブジェクトへの参照を取得します。 型のメンバーは、 型によって宣言されるか、基本型から継承されるためType、 プロパティによってDeclaringType返されるオブジェクトが、現在MemberInfoのオブジェクトを取得するために使用されるオブジェクトとType同じではない可能性があります。

  • このMemberInfoオブジェクトのType取得元のオブジェクトがこのメンバーを宣言しなかった場合、 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