Type.GetConstructors メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の Type のコンストラクターを取得します。
オーバーロード
GetConstructors() |
現在の Type に対して定義されているパブリック コンストラクターをすべて返します。 |
GetConstructors(BindingFlags) |
派生クラス内でオーバーライドされた場合、指定した |
例
この例では、2 つのインスタンス コンストラクターと 1 つの静的コンストラクターを持つクラスからのオーバーロードの出力 GetConstructors() を示します。
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
t(){}
static t(){}
t( int /*i*/ ){}
};
int main()
{
array<ConstructorInfo^>^p = t::typeid->GetConstructors();
Console::WriteLine( p->Length );
for ( int i = 0; i < p->Length; i++ )
{
Console::WriteLine( p[ i ]->IsStatic );
}
}
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors();
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
type t() =
static do ()
new(i: int) = t ()
let p = typeof<t>.GetConstructors()
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(t).GetConstructors()
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
このコードの出力は次のとおりです。
2
False
False
オーバーロードが GetConstructors 使用するのは唯一 Public のものであり Instance、静的コンストラクターは式によって for
カウントも評価も IsStatic
されないためです。
静的コンストラクターを見つけるには、オーバーロードをGetConstructors使用し、次のコード例に示すように 、, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.InstanceのBindingFlags.Public組み合わせ (論理 OR) を渡します。
using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
t(){}
t( int /*i*/ ){}
static t(){}
};
int main()
{
array<ConstructorInfo^>^p = t::typeid->GetConstructors( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::NonPublic | BindingFlags::Instance) );
Console::WriteLine( p->Length );
for ( int i = 0; i < p->Length; i++ )
{
Console::WriteLine( p[ i ]->IsStatic );
}
}
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors(
BindingFlags.Public | BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
open System.Reflection
type t() =
static do ()
new (i: int) = t ()
let p = typeof<t>.GetConstructors(BindingFlags.Public ||| BindingFlags.Static ||| BindingFlags.NonPublic ||| BindingFlags.Instance)
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(T).GetConstructors( _
BindingFlags.Public Or _
BindingFlags.Static Or _
BindingFlags.NonPublic Or _
BindingFlags.Instance)
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
出力は次のようになります。
3
False
True
False
GetConstructors()
現在の Type に対して定義されているパブリック コンストラクターをすべて返します。
public:
cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public:
virtual cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public System.Reflection.ConstructorInfo[] GetConstructors ();
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo[] GetConstructors ();
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
Public Function GetConstructors () As ConstructorInfo()
戻り値
現在の ConstructorInfo に対して定義されたすべてのパブリック インスタンス コンストラクター (ただし、型初期化子 (静的コンストラクター) を除く) を表している Type オブジェクトの配列。 パブリック インスタンス コンストラクターが現在の Type に対して定義されている場合、または現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合は、型 ConstructorInfo の空の配列が返されます。
実装
- 属性
注釈
メソッドは GetConstructors 、宣言順序などの特定の順序でコンストラクターを返しません。 コンストラクターが返される順序に依存しないコードは、その順序が異なるためです。
次の表は、型に反映するときにメソッドによって Get
返される基底クラスのメンバーを示しています。
メンバーの型 | 静的 | 非静的 |
---|---|---|
コンストラクター | いいえ | いいえ |
フィールド | いいえ | はい。 フィールドは常に名前と署名で非表示になります。 |
Event | 適用なし | 一般的な型システムルールは、継承がプロパティを実装するメソッドの継承と同じであるということです。 リフレクションは、プロパティを名前とシグネチャによる非表示として扱います。 以下の注 2 を参照してください。 |
メソッド | いいえ | はい。 メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前とシグネチャで非表示にすることもできます。 |
入れ子になった型 | いいえ | いいえ |
プロパティ | 適用なし | 一般的な型システムルールは、継承がプロパティを実装するメソッドの継承と同じであるということです。 リフレクションは、プロパティを名前とシグネチャによる非表示として扱います。 以下の注 2 を参照してください。 |
名前と署名による非表示では、カスタム修飾子、戻り値の型、パラメーターの型、センチネル、アンマネージ呼び出し規則など、署名のすべての部分が考慮されます。 これはバイナリ比較です。
リフレクションの場合、プロパティとイベントは名前と署名による非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーのみが含まれている場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。
カスタム属性は、共通型システムの一部ではありません。
このメソッド オーバーロードは、| (BindingFlags.PublicOr
BindingFlags.InstanceVisual Basic BindingFlags.Instance ) を使用BindingFlags.Publicして、メソッドのオーバーロードを呼び出します。GetConstructors(BindingFlags) クラス初期化子 (静的コンストラクター) は見つかりません。 クラス初期化子を検索するには、| (BindingFlags.StaticOr
BindingFlags.NonPublicVisual Basic BindingFlags.NonPublic ) を受け取りBindingFlags、指定BindingFlags.Staticするオーバーロードを使用します。 プロパティを使用してクラス初期化子を TypeInitializer 取得することもできます。
現在 Type の値が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つオブジェクトを返 ConstructorInfo します。 たとえば、クラスC<T>
にコンストラクター C(T t1)
(Sub New(ByVal t1 As T)
Visual Basic) がある場合、呼び出しGetConstructors元C<int>
は C# (Sub New(ByVal t1 As Integer)
Visual Basic) で表す C(int t1)
a を返ConstructorInfoします。
現在 Type の値がジェネリック型パラメーターを表す場合、メソッドは GetConstructors 空の配列を返します。
こちらもご覧ください
- ConstructorInfo
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
適用対象
GetConstructors(BindingFlags)
派生クラス内でオーバーライドされた場合、指定した BindingFlags
を使用して、現在の Type に対して定義されているコンストラクターを検索します。
public:
abstract cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.ConstructorInfo[] GetConstructors (System.Reflection.BindingFlags bindingAttr);
[System.Runtime.InteropServices.ComVisible(true)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors (System.Reflection.BindingFlags bindingAttr);
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
Public MustOverride Function GetConstructors (bindingAttr As BindingFlags) As ConstructorInfo()
パラメーター
戻り値
現在の ConstructorInfo にコンストラクターが定義されている場合は、型初期化子を含め、定義されているコンストラクターのうち指定したバインディング制約に一致するすべてのコンストラクターを表す Type オブジェクトの配列。 現在の Type に対してコンストラクターが定義されていない場合、または現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合は、型 ConstructorInfo の空の配列を返します。
実装
- 属性
注釈
bindingAttr
は、パブリック コンストラクターのみを返すか、パブリック コンストラクターと非パブリック コンストラクターの両方を返すかを指定するために使用できます。
次 BindingFlags のフィルター フラグを使用して、検索に含めるコンストラクターを定義できます。
クラス初期化子 (静的コンストラクター) を取得する場合と共
BindingFlags.NonPublic
に指定BindingFlags.Static
します。 プロパティを使用してクラス初期化子を TypeInitializer 取得することもできます。インスタンス コンストラクターの
BindingFlags.Public
一方または両方と共に指定BindingFlags.Instance
しBindingFlags.NonPublic
、インスタンス コンストラクターを取得します。
詳細については、「System.Reflection.BindingFlags」を参照してください。
メソッドは GetConstructors 、宣言の順序など、特定の順序でコンストラクターを返しません。 コンストラクターが返される順序に依存しないコードは、その順序が異なるためです。
現在 Type の値が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つオブジェクトを返 ConstructorInfo します。 たとえば、クラスC<T>
にコンストラクター C(T t1)
(Sub New(ByVal t1 As T)
Visual Basic) がある場合、呼び出しGetConstructors元C<int>
は C# (Sub New(ByVal t1 As Integer)
Visual Basic) で表す C(int t1)
a を返ConstructorInfoします。
現在 Type の値がジェネリック型パラメーターを表す場合、メソッドは GetConstructors 空の配列を返します。
こちらもご覧ください
- ConstructorInfo
- BindingFlags
- DefaultBinder
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])