Type.DeclaringType プロパティ

定義

現在の入れ子にされた型またはジェネリック型パラメーターを宣言する型を取得します。

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

プロパティ値

Type

現在の型が入れ子にされた型である場合、包含する型を表す Type オブジェクト。現在の型がジェネリック型の型パラメーターである場合、ジェネリック型定義。現在の型がジェネリック メソッドの型パラメーターである場合、ジェネリック メソッドを宣言する型。それ以外の場合、null

実装

この例では、派生クラスのメソッドの宣言型を表示します。

using namespace System;
using namespace System::Reflection;

public ref class dtype abstract
{
public:
   ref class MyClassA abstract
   {
   public:
      virtual int m() = 0;
   };

   ref class MyClassB abstract: public MyClassA{};
};

int main()
{
   Console::WriteLine( "The declaring type of m is {0}.", dtype::MyClassB::typeid->GetMethod( "m" )->DeclaringType );
}
/* The example produces the following output:

The declaring type of m is dtype+MyClassA.
*/
using System;
using System.Reflection;

public abstract class dtype
{

    public abstract class MyClassA
    {
        public abstract int m();
    }

    public abstract class MyClassB : MyClassA
    {
    }

    public static void Main(string[] args)
    {
        Console.WriteLine("The declaring type of m is {0}.",
            typeof(MyClassB).GetMethod("m").DeclaringType);
    }
}
/* The example produces the following output:

The declaring type of m is dtype+MyClassA.
*/
Imports System.Reflection

Public MustInherit Class dtype

    Public MustInherit Class MyClassA
        Public MustOverride Function m() As Integer
    End Class

    Public MustInherit Class MyClassB
        Inherits MyClassA
    End Class

    Public Shared Sub Main()
        Console.WriteLine("The declaring type of m is {0}.", _
           GetType(MyClassB).GetMethod("m").DeclaringType)
    End Sub
End Class

注釈

現在の オブジェクト Type がジェネリック型の型パラメーターを表している場合、このプロパティはジェネリック型定義を返します。

現在の オブジェクトがジェネリック メソッドの型パラメーターを表している場合、このプロパティはジェネリック メソッド定義を含む Type 型を返します。 型がジェネリックの場合は、ジェネリック型の定義が返されます。 つまり、次のコードは、ジェネリック メソッドを含むジェネリック クラスのジェネリック型 List<T> 定義を ConvertAll 返します。

Type^ t = List<String^>::typeid->GetMethod("ConvertAll")->GetGenericArguments()[0]->DeclaringType;
Type t = typeof(List<string>).GetMethod("ConvertAll").GetGenericArguments()[0].DeclaringType;
Dim t As Type = GetType(List(Of String)).GetMethod("ConvertAll").GetGenericArguments()(0).DeclaringType

現在の がジェネリック型またはジェネリック メソッドの定義で型パラメーターを表している場合、 プロパティと プロパティは、ジェネリック型パラメーターが最初に定義されたジェネリック型定義またはジェネリック メソッド定義 Type DeclaringType DeclaringMethod を識別します。

  • プロパティがジェネリック メソッド定義を表す を返し、現在の オブジェクトが、そのジェネリック メソッド定義の型 DeclaringMethod MethodInfo MethodInfo Type パラメーターを表す場合。

  • プロパティが を返す場合、プロパティは常にジェネリック型定義を表す オブジェクトを返し、現在のオブジェクトはそのジェネリック型定義の型 DeclaringMethod null DeclaringType Type Type パラメーターを表します。

  • プロパティが DeclaringType スローされる型の IsGenericParameter プロパティを false 取得します InvalidOperationException

適用対象

こちらもご覧ください