次の方法で共有


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 型の空の配列。

    または

    EmptyTypes.

戻り値

パラメータ型配列の型と一致するパラメータが設定されているパブリック インスタンス コンストラクタが存在する場合は、そのコンストラクタを表す ConstructorInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。

例外

例外の種類 条件
ArgumentNullException types が null 参照 (Visual Basic では Nothing) です。

または

types の 1 つの要素が null 参照 (Nothing) です。

ArgumentException types が多次元です。

解説

GetConstructor は、パブリック インスタンス コンストラクタを検索しますが、クラス初期化子を取得するためには使用できません。クラス初期化子は、 GetMemberGetMembersFindMembersGetConstructors 、および 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