Type.GetConstructor メソッド (Type )
指定した配列の型に一致するパラメータが設定されているパブリック インスタンス コンストラクタを検索します。
Overloads Public Function GetConstructor( _
ByVal types() As Type _) As ConstructorInfo
[C#]
public ConstructorInfo GetConstructor(Type[] types);
[C++]
public: ConstructorInfo* GetConstructor(Type* types[]);
[JScript]
public function GetConstructor(
types : Type[]) : ConstructorInfo;
パラメータ
types
取得するコンストラクタのパラメータの数、順序、および型を表す Type オブジェクトの配列。または
パラメータをとらないコンストラクタを取得するための、 Type 型の空の配列。
または
戻り値
パラメータ型配列の型と一致するパラメータが設定されているパブリック インスタンス コンストラクタが存在する場合は、そのコンストラクタを表す ConstructorInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | types が null 参照 (Visual Basic では Nothing) です。
または types の 1 つの要素が null 参照 (Nothing) です。 |
ArgumentException | types が多次元です。 |
解説
GetConstructor は、パブリック インスタンス コンストラクタを検索しますが、クラス初期化子を取得するためには使用できません。クラス初期化子は、 GetMember 、 GetMembers 、 FindMembers 、 GetConstructors 、および TypeInitializer を通じて使用できます。
要求されたコンストラクタがパブリックでない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。
メモ コンストラクタおよびメソッドを検索する場合、パラメータは省略できません。パラメータは呼び出すときだけ省略できます。
使用例
[Visual Basic, C#, C++] MyClass の型を取得し、 ConstructorInfo オブジェクトを取得して、コンストラクタのシグネチャを表示する例を次に示します。
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic
Public Class MyClass1
Public Sub New()
End Sub 'New
Public Sub New(ByVal i As Integer)
End Sub 'New
Public Shared Sub Main()
Try
Dim myType As Type = GetType(MyClass1)
Dim types(0) As Type
types(0) = GetType(Int32)
' Get the constructor that takes an integer as a parameter.
Dim constructorInfoObj As ConstructorInfo = myType.GetConstructor(types)
If Not (constructorInfoObj Is Nothing) Then
Console.WriteLine("The constructor of MyClass that takes an integer as a parameter is: ")
Console.WriteLine(constructorInfoObj.ToString())
Else
Console.WriteLine("The constructor of MyClass that takes no " + "parameters is not available.")
End If
Catch e As Exception
Console.WriteLine("Exception caught.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
End Try
End Sub 'Main
End Class 'MyClass1
[C#]
using System;
using System.Reflection;
using System.Security;
public class MyClass1
{
public MyClass1(){}
public MyClass1(int i){}
public static void Main()
{
try
{
Type myType = typeof(MyClass1);
Type[] types = new Type[1];
types[0] = typeof(int);
// Get the constructor that takes an integer as a parameter.
ConstructorInfo constructorInfoObj = myType.GetConstructor(types);
if (constructorInfoObj != null)
{
Console.WriteLine("The constructor of MyClass1 that takes an " +
"integer as a parameter is: ");
Console.WriteLine(constructorInfoObj.ToString());
}
else
{
Console.WriteLine("The constructor of MyClass1 that takes an integer " +
"as a parameter is not available.");
}
}
catch(Exception e)
{
Console.WriteLine("Exception caught.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public __gc class MyClass1 {
public:
MyClass1() {}
MyClass1(int i) {}
};
int main() {
try {
Type* myType = __typeof(MyClass1);
Type* types[] = new Type*[1];
types->Item[0] = __typeof(int);
// Get the constructor that takes an integer as a parameter.
ConstructorInfo* constructorInfoObj = myType->GetConstructor(types);
if (constructorInfoObj != 0) {
Console::WriteLine(S"The constructor of MyClass1 that takes an integer as a parameter is: ");
Console::WriteLine(constructorInfoObj);
} else {
Console::WriteLine(S"The constructor of MyClass1 that takes an integer as a parameter is not available.");
}
} catch (Exception* e) {
Console::WriteLine(S"Exception caught.");
Console::WriteLine(S"Source: {0}", e->Source);
Console::WriteLine(S"Message: {0}", e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Type クラス | Type メンバ | System 名前空間 | Type.GetConstructor オーバーロードの一覧 | ConstructorInfo | DefaultBinder | ReflectionPermission | GetConstructorImpl | GetConstructors