Type.GetConstructors メソッド ()
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Type Dim returnValue As ConstructorInfo() returnValue = instance.GetConstructors
現在の Type に対して定義されたすべてのパブリック インスタンス コンストラクタ (ただし、型初期化子 (静的コンストラクタ) を除く) を表している ConstructorInfo オブジェクトの配列。パブリック インスタンス コンストラクタが現在の Type に対して定義されている場合、または現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメータを表している場合は、型 ConstructorInfo の空の配列が返されます。

型に対するリフレクション時に Get メソッドによって返される基本クラスのメンバを次の表に示します。
メンバ型 | 非静的 | |
---|---|---|
いいえ | いいえ | |
いいえ | ||
適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 | |
いいえ | はい。メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。 | |
いいえ | いいえ | |
適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 |
-
名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。これはバイナリ比較です。
-
リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスに get アクセサと set アクセサの両方を持つプロパティがあり、派生クラスには get アクセサしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサにはアクセスできません。
このメソッド オーバーロードは、BindingFlags.Public | BindingFlags.Instance (Visual Basic の場合は BindingFlags.PublicOrBindingFlags.Instance) を使用して GetConstructors(BindingFlags) メソッド オーバーロードを呼び出します。このメソッド オーバーロードはクラス初期化子 (.cctor) を見つけません。クラス初期化子を見つけるには、BindingFlags をとるオーバーロードを使用し、BindingFlags.Static | BindingFlags.NonPublic (Visual Basic の場合は BindingFlags.StaticOrBindingFlags.NonPublic) を指定します。TypeInitializer プロパティを使用して、クラス初期化子を取得することもできます。
現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメータを適切な型の引数で置き換えて ConstructorInfo オブジェクトを返します。たとえば、クラス C<T> がコンストラクタ C(T t1) (Visual Basic の場合は Sub New(ByVal t1 As T)) を持っている場合は、GetConstructors を C<int> で呼び出すと、C(int t1) (C# の場合) または Sub New(ByVal t1 As Integer) (Visual Basic の場合) を表すConstructorInfo が返されます。
現在の Type がジェネリック型パラメータを表している場合、GetConstructors メソッドは空の配列を返します。

2 つのインスタンス コンストラクタと 1 つの静的コンストラクタを持つクラスからの GetConstructors オーバーロードの出力例を次に示します。
Imports System 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
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); } } }
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 ); } }
import System.*; import System.Reflection.*; public class T { public T() { } //T static { } //T public T(int i) { } //T public static void main(String[] args) { ConstructorInfo p[] = T.class.ToType().GetConstructors(); Console.WriteLine(p.length); for (int i=0;i < p.length;i++) { Console.WriteLine(p[i].get_IsStatic()); } } //main } //T
import System; import System.Reflection; public class t { public function t() {} static t {} public function t(i : int) {} public static function Main(): void { var p : ConstructorInfo[] = t.GetConstructors(); Console.WriteLine(p.Length); for (var i : int =0;i<p.Length;i++) { Console.WriteLine(p[i].IsStatic); } } } t.Main();
2
GetConstructors オーバーロードは BindingFlags.Public および BindingFlags.Instance だけを使用するため、静的コンストラクタに対しては、for 式によるカウントも、IsStatic による評価も行われません。
静的コンストラクタを見つけるには、次のコード例に示すように、GetConstructors(BindingFlags) オーバーロードを使用し、BindingFlags.Public、BindingFlags.Static、BindingFlags.NonPublic、BindingFlags.Instance の組み合わせ (論理 OR) を渡します。
Imports System 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
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); } } }
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 ); } }
import System.*; import System.Reflection.*; public class T { public T() { } //T static { } //T public T(int i) { } //T public static void main(String[] args) { ConstructorInfo p[] = T.class.ToType().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].get_IsStatic()); } } //main } //T
import System; import System.Reflection; public class t { public function t() {} static t {} public function t(i : int) {} public static function Main() : void { var p : ConstructorInfo[] = t.GetConstructors( BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance); Console.WriteLine(p.Length); for (var i:int=0;i<p.Length;i++) { Console.WriteLine(p[i].IsStatic); } } } t.Main();
3

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Type.GetConstructors メソッド (BindingFlags)
アセンブリ: mscorlib (mscorlib.dll 内)

<ComVisibleAttribute(True)> _ Public MustOverride Function GetConstructors ( _ bindingAttr As BindingFlags _ ) As ConstructorInfo()
Dim instance As Type Dim bindingAttr As BindingFlags Dim returnValue As ConstructorInfo() returnValue = instance.GetConstructors(bindingAttr)
[ComVisibleAttribute(true)] public abstract ConstructorInfo[] GetConstructors ( BindingFlags bindingAttr )
[ComVisibleAttribute(true)] public: virtual array<ConstructorInfo^>^ GetConstructors ( BindingFlags bindingAttr ) abstract
/** @attribute ComVisibleAttribute(true) */ public abstract ConstructorInfo[] GetConstructors ( BindingFlags bindingAttr )
ComVisibleAttribute(true) public abstract function GetConstructors ( bindingAttr : BindingFlags ) : ConstructorInfo[]
- bindingAttr
検索の実行方法を指定する 1 つ以上の BindingFlags から成るビット マスク。
または
null 参照 (Visual Basic では Nothing) を返す 0。
現在の Type にコンストラクタが定義されている場合は、型初期化子を含め、定義されているコンストラクタをのうち指定したバインディング制約に一致するすべてのコンストラクタを表す ConstructorInfo オブジェクトの配列。現在の Type に対してコンストラクタが定義されていない場合、または現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメータを表している場合は、型 ConstructorInfo の空の配列を返します。

パブリック コンストラクタだけを返すか、パブリック コンストラクタと非パブリック コンストラクタの両方を返すかを指定するには、bindingAttr を使用します。
厳密に一致する対象が存在しない場合は、一致するものを選択するために、binder は types 配列で指定されたパラメータの型を強制的に変換しようとします。binder が一致するものを選択できない場合は、null 参照 (Visual Basic では Nothing) が返されます。
次の BindingFlags フィルタ フラグは、検索対象に含めるコンストラクタを定義するために使用できます。
-
戻り値を取得するには、BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。
-
検索対象にパブリックではないコンストラクタ (つまり、プライベート コンストラクタやプロテクト コンストラクタ) を含めるための BindingFlags.NonPublic を指定します。
詳細については、「System.Reflection.BindingFlags」を参照してください。
要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。
このメソッドを使用して初期化子 (.cctor) を取得するには、BindingFlags.Static | BindingFlags.NonPublic (Visual Basic の場合は BindingFlags.StaticOrBindingFlags.NonPublic) を指定する必要があります。TypeInitializer プロパティを使用して、クラス初期化子を取得することもできます。
現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメータを適切な型の引数で置き換えて ConstructorInfo オブジェクトを返します。たとえば、クラス C<T> がコンストラクタ C(T t1) (Visual Basic の場合は Sub New(ByVal t1 As T)) を持っている場合は、GetConstructors を C<int> で呼び出すと、C(int t1) (C# の場合) または Sub New(ByVal t1 As Integer) (Visual Basic の場合) を表すConstructorInfo が返されます。
現在の Type がジェネリック型パラメータを表している場合、GetConstructors メソッドは空の配列を返します。

2 つのインスタンス コンストラクタと 1 つの静的コンストラクタを持つクラスからの GetConstructors オーバーロードの出力例を次に示します。
Imports System 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
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); } } }
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 ); } }
import System.*; import System.Reflection.*; public class T { public T() { } //T static { } //T public T(int i) { } //T public static void main(String[] args) { ConstructorInfo p[] = T.class.ToType().GetConstructors(); Console.WriteLine(p.length); for (int i=0;i < p.length;i++) { Console.WriteLine(p[i].get_IsStatic()); } } //main } //T
import System; import System.Reflection; public class t { public function t() {} static t {} public function t(i : int) {} public static function Main(): void { var p : ConstructorInfo[] = t.GetConstructors(); Console.WriteLine(p.Length); for (var i : int =0;i<p.Length;i++) { Console.WriteLine(p[i].IsStatic); } } } t.Main();
2
GetConstructors オーバーロードは Public および Instance だけを使用するため、静的コンストラクタに対しては、for 式によるカウントも、IsStatic による評価も行われません。
静的コンストラクタを見つけるには、次のコード例に示すように、GetConstructors オーバーロードを使用し、BindingFlags.Public、BindingFlags.Static、BindingFlags.NonPublic、BindingFlags.Instance の組み合わせ (論理 OR) を渡します。
Imports System 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
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); } } }
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 ); } }
import System.*; import System.Reflection.*; public class T { public T() { } //T static { } //T public T(int i) { } //T public static void main(String[] args) { ConstructorInfo p[] = T.class.ToType().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].get_IsStatic()); } } //main } //T
import System; import System.Reflection; public class t { public function t() {} static t {} public function t(i : int) {} public static function Main() : void { var p : ConstructorInfo[] = t.GetConstructors( BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance); Console.WriteLine(p.Length); for (var i:int=0;i<p.Length;i++) { Console.WriteLine(p[i].IsStatic); } } } t.Main();
3


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Type.GetConstructors メソッド

名前 | 説明 |
---|---|
Type.GetConstructors () | 現在の Type に対して定義されているパブリック コンストラクタをすべて返します。 .NET Compact Framework によってサポートされています。 |
Type.GetConstructors (BindingFlags) | 派生クラスによってオーバーライドされた場合、指定した BindingFlags を使用して、現在の Type に対して定義されているコンストラクタを検索します。 .NET Compact Framework によってサポートされています。 |

_Type.GetConstructors メソッド
Weblioに収録されているすべての辞書からType.GetConstructorsを検索する場合は、下記のリンクをクリックしてください。

- Type.GetConstructorsのページへのリンク