Type.DeclaringType プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の入れ子にされた型またはジェネリック型パラメーターを宣言する型を取得します。
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 オブジェクト。現在の型がジェネリック型の型パラメーターである場合、ジェネリック型定義。現在の型がジェネリック メソッドの型パラメーターである場合、ジェネリック メソッドを宣言する型。それ以外の場合、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 。