英語で読む

次の方法で共有


Type.DeclaringType プロパティ

定義

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

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

プロパティ値

Type

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

実装

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

C#
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.
*/

注釈

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

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

C#
Type t = typeof(List<string>).GetMethod("ConvertAll").GetGenericArguments()[0].DeclaringType;

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

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

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

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

適用対象

製品 バージョン
.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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください