次の方法で共有


MemberInfo.DeclaringType プロパティ

定義

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

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

プロパティ値

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

実装

次の例では、 IValue1 つのメンバー GetValueである インターフェイス を定義します。 また、A4 つのクラス (インターフェイスを実装IValueする基底クラス) をB定義します。これは、 を継承Aし、基底クラスのGetValue実装Cからの実装を非表示にします。これは、単に を継承しD、そのGetValueメソッドをAA継承してオーバーライドします。 次に、型の各メンバー (からObject継承されたメンバーを含む) のオブジェクトを取得MemberInfoし、そのDeclaringTypeプロパティの値を表示します。

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

の宣言型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

適用対象