Type.GetConstructor メソッド

定義

現在の Type の特定のコンストラクターを取得します。Gets a specific constructor of the current Type.

オーバーロード

GetConstructor(Type[])

指定した配列の型に一致するパラメーターが設定されているパブリック インスタンス コンストラクターを検索します。Searches for a public instance constructor whose parameters match the types in the specified array.

GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

指定したバインディング制約を使用して、指定した引数の型および修飾子と一致するパラメーターが設定されているコンストラクターを検索します。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

指定したバインディング制約および指定した呼び出し規則を使用して、指定した引数の型および修飾子と一致するパラメーターが設定されているコンストラクターを検索します。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

GetConstructor(Type[])

指定した配列の型に一致するパラメーターが設定されているパブリック インスタンス コンストラクターを検索します。Searches for a public instance constructor whose parameters match the types in the specified array.

public:
 System::Reflection::ConstructorInfo ^ GetConstructor(cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::ConstructorInfo ^ GetConstructor(cli::array <Type ^> ^ types);
public System.Reflection.ConstructorInfo GetConstructor (Type[] types);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor (Type[] types);
member this.GetConstructor : Type[] -> System.Reflection.ConstructorInfo
abstract member GetConstructor : Type[] -> System.Reflection.ConstructorInfo
override this.GetConstructor : Type[] -> System.Reflection.ConstructorInfo
Public Function GetConstructor (types As Type()) As ConstructorInfo

パラメーター

types
Type[]

目的のコンストラクターのパラメーターの数、順序、および型を表す Type オブジェクトの配列。An array of Type objects representing the number, order, and type of the parameters for the desired constructor.

または-or- パラメーターをとらないコンストラクターを取得するための、 Type 型の空の配列。An empty array of Type objects, to get a constructor that takes no parameters. このような空の配列は、 static フィールド EmptyTypesによって提供されます。Such an empty array is provided by the static field EmptyTypes.

戻り値

ConstructorInfo

パラメーター型配列の型と一致するパラメーターが設定されているパブリック インスタンス コンストラクターが存在する場合は、そのコンストラクターを表すオブジェクト。それ以外の場合は nullAn object representing the public instance constructor whose parameters match the types in the parameter type array, if found; otherwise, null.

実装

属性

例外

typesnull です。types is null.

または-or- types の要素の 1 つが null です。One of the elements in types is null.

types に多次元配列が設定されています。types is multidimensional.

次の例では、MyClassの型を取得し、ConstructorInfo オブジェクトを取得して、コンストラクターシグネチャを表示します。The following example obtains the type of MyClass, gets the ConstructorInfo object, and displays the constructor signature.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1(){}

   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the constructor that takes an integer as a parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( types );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that takes an integer as a parameter is: " );
         Console::WriteLine( constructorInfoObj );
      }
      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: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
}

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);
        }
    }
}
Imports System.Reflection
Imports System.Security

Public Class MyClass1

    Public Sub New()
    End Sub

    Public Sub New(ByVal i As Integer)
    End Sub

    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
End Class

注釈

このメソッドオーバーロードは、パブリックインスタンスコンストラクターを検索します。クラス初期化子 (静的コンストラクター) を取得するために使用することはできません。This method overload looks for public instance constructors and cannot be used to obtain a class initializer (static constructor). クラス初期化子を取得するには、BindingFlagsを受け取るオーバーロードを使用し| 、BindingFlags.Static BindingFlags.NonPublic (OrBindingFlags.StaticBindingFlags.NonPublic Visual Basic) を指定します。To get a class initializer, use an overload that takes BindingFlags, and specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). TypeInitializer プロパティを使用してクラス初期化子を取得することもできます。You can also get the class initializer using the TypeInitializer property.

要求されたコンストラクターがパブリックでない場合、このメソッドは nullを返します。If the requested constructor is non-public, this method returns null.

注意

コンストラクターとメソッドを参照するときにパラメーターを省略することはできません。You cannot omit parameters when looking up constructors and methods. パラメーターを省略できるのは、の呼び出し時だけです。You can only omit parameters when invoking.

現在の Type が構築ジェネリック型を表している場合、このメソッドは、適切な型引数によって置き換えられた型パラメーターを使用して ConstructorInfo を返します。If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. 現在の Type がジェネリック型またはジェネリックメソッドの定義の型パラメーターを表している場合、このメソッドは常に nullを返します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

こちらもご覧ください

GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

指定したバインディング制約を使用して、指定した引数の型および修飾子と一致するパラメーターが設定されているコンストラクターを検索します。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

public:
 System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public:
 virtual System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.ConstructorInfo GetConstructor (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, System.Reflection.ParameterModifier[] modifiers);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, System.Reflection.ParameterModifier[] modifiers);
member this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
abstract member GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
override this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
Public Function GetConstructor (bindingAttr As BindingFlags, binder As Binder, types As Type(), modifiers As ParameterModifier()) As ConstructorInfo

パラメーター

bindingAttr
BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted.

または-or- null を返す場合は DefaultDefault to return null.

binder
Binder

一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

または-or- Nothing を使用する場合は、null 参照 (Visual Basic の場合は DefaultBinder)。A null reference (Nothing in Visual Basic), to use the DefaultBinder.

types
Type[]

取得するコンストラクターのパラメーターの数、順序、および型を表す Type オブジェクトの配列。An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

または-or- パラメーターをとらないコンストラクターを取得するための、 Type 型の空の配列 (Type[] types = new Type[0])。An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

または-or- [https://login.microsoftonline.com/consumers/](EmptyTypes)EmptyTypes.

modifiers
ParameterModifier[]

パラメーター型配列内の対応する要素に関連付けられている属性を表す ParameterModifier オブジェクトの配列。An array of ParameterModifier objects representing the attributes associated with the corresponding element in the parameter type array. 既定のバインダーは、このパラメーターを処理しません。The default binder does not process this parameter.

戻り値

ConstructorInfo

指定した要件と一致するコンストラクターが存在する場合は、そのコンストラクターを表す ConstructorInfo オブジェクト。それ以外の場合は nullA ConstructorInfo object representing the constructor that matches the specified requirements, if found; otherwise, null.

実装

属性

例外

typesnull です。types is null.

または-or- types の要素の 1 つが null です。One of the elements in types is null.

types に多次元配列が設定されています。types is multidimensional.

または-or- modifiers に多次元配列が設定されています。modifiers is multidimensional.

または-or- typesmodifiers の長さが同じではありません。types and modifiers do not have the same length.

次のプログラムは MyClass1 クラスの型を取得し、指定したバインディングフラグに一致する ConstructorInfo オブジェクトを取得し、コンストラクターのシグネチャを表示します。The following program obtains the type of MyClass1 class, gets the ConstructorInfo object matching the specified binding flags, and displays the signature of the constructor.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the constructor that is public and takes an integer parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, types, nullptr );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that is public and takes an integer as a parameter is:" );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of the MyClass1 that is public and takes an integer as a parameter is not available." );
      }
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( ArgumentException^ e ) 
   {
      Console::WriteLine( "ArgumentException: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

public class 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 is public and takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null, types, null);
            if (constructorInfoObj != null )
            {
                Console.WriteLine("The constructor of MyClass1 that is public " +
                    "and takes an integer as a parameter is:");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of the MyClass1 that is public " +
                    "and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Imports System.Reflection
Imports System.Security


Public Class MyClass1
    Public Sub New(ByVal i As Integer)
    End Sub

    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            Dim types(0) As Type
            types(0) = GetType(Integer)
            ' Get the constructor that is public and takes an integer parameter.
            Dim constructorInfoObj As ConstructorInfo = _
                     myType.GetConstructor(BindingFlags.Instance Or _
                     BindingFlags.Public, Nothing, types, Nothing)
            If Not (constructorInfoObj Is Nothing) Then
                Console.WriteLine("The constructor of MyClass1 that is " + _
                               "public and takes an integer as a parameter is ")
                Console.WriteLine(constructorInfoObj.ToString())
            Else
                Console.WriteLine("The constructor of MyClass1 that is " + _
                  "public and takes an integer as a parameter is not available.")
            End If
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As ArgumentException
            Console.WriteLine("ArgumentException: " + e.Message)
        Catch e As SecurityException
            Console.WriteLine("SecurityException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub
End Class

注釈

完全に一致するものが存在しない場合、一致を選択するために、bindertypes 配列に指定されているパラメーターの型を強制的に強制しようとします。If an exact match does not exist, the binder will attempt to coerce the parameter types specified in the types array in order to select a match. binder が一致を選択できない場合は、null が返されます。If the binder is unable to select a match, then null is returned.

次の BindingFlags のフィルターフラグを使用して、検索に含めるコンストラクターを定義できます。The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • 戻り値を取得するには、BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 検索にパブリックコンストラクターを含めるには、BindingFlags.Public を指定します。Specify BindingFlags.Public to include public constructors in the search.

  • BindingFlags.NonPublic を指定して、検索で非パブリックコンストラクター (プライベート、内部、およびプロテクトコンストラクター) を含めるようにします。Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

詳細については、「 System.Reflection.BindingFlags 」を参照してください。See System.Reflection.BindingFlags for more information.

このメソッドオーバーロードを使用してクラス初期化子 (静的コンストラクター) を取得するに|は、BindingFlags.Static BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic で Visual Basic) を指定する必要があります。To get the class initializer (static constructor) using this method overload, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). TypeInitializer プロパティを使用してクラス初期化子を取得することもできます。You can also get the class initializer using the TypeInitializer property.

注意

コンストラクターとメソッドを参照するときにパラメーターを省略することはできません。You cannot omit parameters when looking up constructors and methods. パラメーターを省略できるのは、の呼び出し時だけです。You can only omit parameters when invoking.

現在の Type が構築ジェネリック型を表している場合、このメソッドは、適切な型引数によって置き換えられた型パラメーターを使用して ConstructorInfo を返します。If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. 現在の Type がジェネリック型またはジェネリックメソッドの定義の型パラメーターを表している場合、このメソッドは常に nullを返します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

こちらもご覧ください

GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

指定したバインディング制約および指定した呼び出し規則を使用して、指定した引数の型および修飾子と一致するパラメーターが設定されているコンストラクターを検索します。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

public:
 System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, System::Reflection::CallingConventions callConvention, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public:
 virtual System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, System::Reflection::CallingConventions callConvention, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.ConstructorInfo GetConstructor (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, Type[] types, System.Reflection.ParameterModifier[] modifiers);
member this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * System.Reflection.CallingConventions * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
abstract member GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * System.Reflection.CallingConventions * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
override this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * System.Reflection.CallingConventions * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
Public Function GetConstructor (bindingAttr As BindingFlags, binder As Binder, callConvention As CallingConventions, types As Type(), modifiers As ParameterModifier()) As ConstructorInfo

パラメーター

bindingAttr
BindingFlags

検索を実施する方法を指定する列挙値のビットごとの組み合わせ。A bitwise combination of the enumeration values that specify how the search is conducted.

または-or- null を返す場合は DefaultDefault to return null.

binder
Binder

一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

または-or- Nothing を使用する場合は、null 参照 (Visual Basic の場合は DefaultBinder)。A null reference (Nothing in Visual Basic), to use the DefaultBinder.

callConvention
CallingConventions

引数の順序とレイアウト、戻り値を渡す方法、引数を格納するレジスタ、スタックのクリーンアップに関する一連の規則を指定するオブジェクト。The object that specifies the set of rules to use regarding the order and layout of arguments, how the return value is passed, what registers are used for arguments, and the stack is cleaned up.

types
Type[]

取得するコンストラクターのパラメーターの数、順序、および型を表す Type オブジェクトの配列。An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

または-or- パラメーターをとらないコンストラクターを取得するための、 Type 型の空の配列 (Type[] types = new Type[0])。An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

modifiers
ParameterModifier[]

types 配列内の対応する要素に関連付けられている属性を表す ParameterModifier オブジェクトの配列。An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. 既定のバインダーは、このパラメーターを処理しません。The default binder does not process this parameter.

戻り値

ConstructorInfo

指定した要件と一致するコンストラクターが存在する場合は、そのコンストラクターを表すオブジェクト。それ以外の場合は nullAn object representing the constructor that matches the specified requirements, if found; otherwise, null.

実装

属性

例外

typesnull です。types is null.

または-or- types の要素の 1 つが null です。One of the elements in types is null.

types に多次元配列が設定されています。types is multidimensional.

または-or- modifiers に多次元配列が設定されています。modifiers is multidimensional.

または-or- typesmodifiers の長さが同じではありません。types and modifiers do not have the same length.

次の例では、MyClass1の型を取得し、指定したバインディングフラグと一致する ConstructorInfo オブジェクトを取得し、コンストラクターシグネチャを表示します。The following example obtains the type of MyClass1, gets the ConstructorInfo object that matches the specified binding flags, and displays the constructor signature.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the public instance constructor that takes an integer parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, CallingConventions::HasThis, types, nullptr );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: " );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available." );
      }
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( ArgumentException^ e ) 
   {
      Console::WriteLine( "ArgumentException: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

public class 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 public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if(constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that is a public instance " +
                    "method and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Public Class MyClass1
    Public Sub New(ByVal i As Integer)
    End Sub
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            Dim types(0) As Type
            types(0) = GetType(Integer)
            ' Get the public instance constructor that takes an integer parameter.
            Dim constructorInfoObj As ConstructorInfo = _
                        myType.GetConstructor(BindingFlags.Instance Or _
                        BindingFlags.Public, Nothing, _
                        CallingConventions.HasThis, types, Nothing)
            If Not (constructorInfoObj Is Nothing) Then
                Console.WriteLine("The constructor of MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is: ")
                Console.WriteLine(constructorInfoObj.ToString())
            Else
                Console.WriteLine("The constructor MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is not available.")
            End If
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As ArgumentException
            Console.WriteLine("ArgumentException: " + e.Message)
        Catch e As SecurityException
            Console.WriteLine("SecurityException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub
End Class

注釈

既定のバインダーでは ParameterModifier (modifiers パラメーター) は処理されませんが、抽象 System.Reflection.Binder クラスを使用して、modifiersを処理するカスタムバインダーを作成できます。Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier は、COM 相互運用機能を使用してを呼び出す場合にのみ使用され、参照によって渡されるパラメーターのみが処理されます。ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

完全に一致するものが存在しない場合、一致を選択するために、bindertypes 配列に指定されているパラメーターの型を強制的に強制しようとします。If an exact match does not exist, the binder will attempt to coerce the parameter types specified in the types array in order to select a match. binder が一致を選択できない場合は、null が返されます。If the binder is unable to select a match, then null is returned.

次の BindingFlags のフィルターフラグを使用して、検索に含めるコンストラクターを定義できます。The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • 戻り値を取得するには、BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 検索にパブリックコンストラクターを含めるには、BindingFlags.Public を指定します。Specify BindingFlags.Public to include public constructors in the search.

  • BindingFlags.NonPublic を指定して、検索で非パブリックコンストラクター (プライベート、内部、およびプロテクトコンストラクター) を含めるようにします。Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

詳細については、「 System.Reflection.BindingFlags 」を参照してください。See System.Reflection.BindingFlags for more information.

このメソッドを使用してクラス初期化子 (静的コンストラクター) を取得するに|は BindingFlags.Static BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic で Visual Basic) を指定する必要があります。To get the class initializer (static constructor) using this method, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). TypeInitializer プロパティを使用してクラス初期化子を取得することもできます。You can also get the class initializer using the TypeInitializer property.

次の表は、型に対してリフレクションを行うときに、Get メソッドによって返される基底クラスのメンバーを示しています。The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

メンバーの型Member Type 静的Static 非静的Non-Static
ConstructorConstructor いいえNo いいえNo
フィールドField いいえNo はい。Yes. フィールドは、常に名前と署名で隠ぺいされます。A field is always hide-by-name-and-signature.
EventEvent 適用なしNot applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
方法Method いいえNo はい。Yes. メソッド (仮想と非仮想の両方) は、非表示にするか、名前と署名を隠すことができます。A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
入れ子にされた型Nested Type いいえNo いいえNo
プロパティProperty 適用なしNot applicable 共通型システムの規則は、継承が、プロパティを実装するメソッドと同じであることを示します。The common type system rule is that the inheritance is the same as that of the methods that implement the property. リフレクションは、プロパティを名前で隠す、署名として扱います。Reflection treats properties as hide-by-name-and-signature. 下記のメモ2を参照してください。See note 2 below.
  1. 名前による隠ぺいと署名では、カスタム修飾子、戻り値の型、パラメーターの型、sentinel、アンマネージ呼び出し規約を含む、シグネチャのすべての部分が考慮されます。Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. これは、バイナリ比較です。This is a binary comparison.

  2. リフレクションの場合、プロパティとイベントは、名前とシグネチャが隠ぺいされます。For reflection, properties and events are hide-by-name-and-signature. 基底クラスに get と set の両方のアクセサーを持つプロパティがあり、派生クラスに get アクセサーのみがある場合、派生クラスのプロパティは基底クラスのプロパティを非表示にします。基底クラスの setter にアクセスすることはできません。If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. カスタム属性は、共通型システムの一部ではありません。Custom attributes are not part of the common type system.

注意

コンストラクターとメソッドを参照するときにパラメーターを省略することはできません。You cannot omit parameters when looking up constructors and methods. パラメーターを省略できるのは、の呼び出し時だけです。You can only omit parameters when invoking.

現在の Type が構築ジェネリック型を表している場合、このメソッドは、適切な型引数によって置き換えられた型パラメーターを使用して ConstructorInfo を返します。If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. 現在の Type がジェネリック型またはジェネリックメソッドの定義の型パラメーターを表している場合、このメソッドは常に nullを返します。If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

こちらもご覧ください

適用対象