Type.GetConstructor Type.GetConstructor Type.GetConstructor Type.GetConstructor Method

Definition

Ruft einen bestimmten Konstruktor des aktuellen Type ab.Gets a specific constructor of the current Type.

Überlädt

GetConstructor(Type[]) GetConstructor(Type[]) GetConstructor(Type[]) GetConstructor(Type[])

Sucht einen öffentlichen Instanzkonstruktor, dessen Parameter den Typen im angegebenen Array entsprechen.Searches for a public instance constructor whose parameters match the types in the specified array.

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

Sucht einen Konstruktor, dessen Parameter unter Verwendung der angegebenen Bindungseinschränkungen den angegebenen Argumenttypen und -modifizierern entsprechen.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

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

Sucht einen Konstruktor, dessen Parameter den angegebenen Argumenttypen und -modifizierern entsprechen, und berücksichtigt dabei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention.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[]) GetConstructor(Type[]) GetConstructor(Type[]) GetConstructor(Type[])

Sucht einen öffentlichen Instanzkonstruktor, dessen Parameter den Typen im angegebenen Array entsprechen.Searches for a public instance constructor whose parameters match the types in the specified array.

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

Parameter

types
Type[]

Ein Array von Type-Objekten, das die Anzahl, die Reihenfolge und den Typ der Parameter des abzurufenden Konstruktors darstellt.An array of Type objects representing the number, order, and type of the parameters for the desired constructor.

- oder --or- Ein leeres Array von Type-Objekten zum Abrufen eines Konstruktors ohne Parameter.An empty array of Type objects, to get a constructor that takes no parameters. Das static-Feld EmptyTypes stellt ein entsprechendes leeres Array bereit.Such an empty array is provided by the static field EmptyTypes.

Gibt zurück

Ein Objekt, das den öffentlichen Instanzkonstruktor darstellt, dessen Parameter den Typen im Parametertyparray entsprechen, sofern gefunden, andernfalls null.An object representing the public instance constructor whose parameters match the types in the parameter type array, if found; otherwise, null.

Implementiert

Ausnahmen

types ist null.types is null.

- oder --or- Eines der Elemente in types ist null.One of the elements in types is null.

types ist mehrdimensional.types is multidimensional.

Beispiele

Im folgenden Beispiel wird der Typ von MyClassabgerufen, das ConstructorInfo -Objekt abgerufen und die Konstruktorsignatur angezeigt.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
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

Hinweise

Diese Methoden Überladung sucht nach öffentlichen Instanzkonstruktoren und kann nicht verwendet werden, um einen Klasseninitialisierer (statischer Konstruktor) abzurufen.This method overload looks for public instance constructors and cannot be used to obtain a class initializer (static constructor). Um einen Klasseninitialisierer zu erhalten, verwenden Sie eine BindingFlagsÜberladung, BindingFlags.Static dieBindingFlags.Static annimmt und ( | BindingFlags.NonPublic Or BindingFlags.NonPublic in Visual Basic) angibt.To get a class initializer, use an overload that takes BindingFlags, and specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

Wenn der angeforderte Konstruktor nicht öffentlich ist, gibt diese Methode nullzurück.If the requested constructor is non-public, this method returns null.

Hinweis

Sie können Parameter nicht weglassen, wenn Sie Konstruktoren und Methoden suchen.You cannot omit parameters when looking up constructors and methods. Beim Aufrufen von können Sie nur Parameter weglassen.You can only omit parameters when invoking.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese ConstructorInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, gibt diese nullMethode immer zurück.If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Siehe auch

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

Sucht einen Konstruktor, dessen Parameter unter Verwendung der angegebenen Bindungseinschränkungen den angegebenen Argumenttypen und -modifizierern entsprechen.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

public:
 virtual System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <Type ^> ^ types, cli::array <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);
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

Parameter

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, damit null zurückgegeben wird.Default to return null.

binder
Binder Binder Binder Binder

Ein Objekt, das eine Gruppe von Eigenschaften definiert und eine Bindung ermöglicht. Dazu kann die Auswahl einer überladenen Methode, die Umwandlung von Argumenttypen und der Aufruf eines Members durch Reflektion gehören.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.

- oder --or- Ein Nullverweis (Nothing in Visual Basic), wenn DefaultBinder verwendet werden soll.A null reference (Nothing in Visual Basic), to use the DefaultBinder.

types
Type[]

Ein Array von Type-Objekten, das Anzahl, Reihenfolge und Typ der Parameter des abzurufenden Konstruktors darstellt.An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen eines Konstruktors, der keine Parameter akzeptiert.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

- oder --or- EmptyTypes.EmptyTypes.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im Parametertyparray zugeordnet sind.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the parameter type array. Der Standardbinder verarbeitet diesen Parameter nicht.The default binder does not process this parameter.

Gibt zurück

Ein ConstructorInfo-Objekt, das den Konstruktor darstellt, der den angegebenen Anforderungen entspricht, oder null, wenn kein entsprechender Konstruktor gefunden wurde.A ConstructorInfo object representing the constructor that matches the specified requirements, if found; otherwise, null.

Implementiert

Ausnahmen

types ist null.types is null.

- oder --or- Eines der Elemente in types ist null.One of the elements in types is null.

types ist mehrdimensional.types is multidimensional.

- oder --or- modifiers ist mehrdimensional.modifiers is multidimensional.

- oder --or- types und modifiers weisen nicht die gleiche Länge auf.types and modifiers do not have the same length.

Beispiele

Das folgende Programm ruft den Typ der MyClass1 Klasse ab, ruft ConstructorInfo das Objekt ab, das mit den angegebenen Bindungsflags übereinstimmt, und zeigt die Signatur des Konstruktors an.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
Imports System.Reflection
Imports System.Security


Public Class MyClass1
    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(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

Hinweise

Wenn keine genaue Entsprechung vorhanden ist, versucht binder , die types im Array angegebenen Parametertypen umzuleiten, damit eine Entsprechung ausgewählt wird.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. Wenn keine Entsprechung ausgewählt null werden kann, wird zurückgegeben. binderIf the binder is unable to select a match, then null is returned.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Konstruktoren in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Geben BindingFlags.Public Sie an, um öffentliche Konstruktoren in die Suche einzubeziehen.Specify BindingFlags.Public to include public constructors in the search.

  • Geben BindingFlags.NonPublic Sie an, um nicht öffentliche Konstruktoren (d. h. private, interne und geschützte Konstruktoren) in die Suche einzubeziehen.Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Um den Klasseninitialisierer (statischer Konstruktor) mithilfe dieser Methoden Überladung zu erhalten BindingFlags.Static ,BindingFlags.Static müssen Sie ( | BindingFlags.NonPublic Or BindingFlags.NonPublic in Visual Basic) angeben.To get the class initializer (static constructor) using this method overload, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

Hinweis

Sie können Parameter nicht weglassen, wenn Sie Konstruktoren und Methoden suchen.You cannot omit parameters when looking up constructors and methods. Beim Aufrufen von können Sie nur Parameter weglassen.You can only omit parameters when invoking.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese ConstructorInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, gibt diese nullMethode immer zurück.If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Siehe auch

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

Sucht einen Konstruktor, dessen Parameter den angegebenen Argumenttypen und -modifizierern entsprechen, und berücksichtigt dabei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

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);
[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);
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

Parameter

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, damit null zurückgegeben wird.Default to return null.

binder
Binder Binder Binder Binder

Ein Objekt, das eine Gruppe von Eigenschaften definiert und eine Bindung ermöglicht. Dazu kann die Auswahl einer überladenen Methode, die Umwandlung von Argumenttypen und der Aufruf eines Members durch Reflektion gehören.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.

- oder --or- Ein Nullverweis (Nothing in Visual Basic), wenn DefaultBinder verwendet werden soll.A null reference (Nothing in Visual Basic), to use the DefaultBinder.

callConvention
CallingConventions CallingConventions CallingConventions CallingConventions

Das Objekt, das die Regeln für die Reihenfolge und das Layout von Argumenten, die Art der Übergabe des Rückgabewerts, die für Argumente zu verwendenden Register und die Art der Stapelbereinigung angibt.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[]

Ein Array von Type-Objekten, das Anzahl, Reihenfolge und Typ der Parameter des abzurufenden Konstruktors darstellt.An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

- oder --or- Ein leeres Array vom Type-Typ, d. h. Type[] types = new Type[0], zum Abrufen eines Konstruktors, der keine Parameter akzeptiert.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier-Objekten, die die Attribute darstellen, die dem entsprechenden Element im types-Array zugeordnet sind.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Der Standardbinder verarbeitet diesen Parameter nicht.The default binder does not process this parameter.

Gibt zurück

Ein Objekt, das den Konstruktor darstellt, der den angegebenen Anforderungen entspricht, sofern gefunden, andernfalls null.An object representing the constructor that matches the specified requirements, if found; otherwise, null.

Implementiert

Ausnahmen

types ist null.types is null.

- oder --or- Eines der Elemente in types ist null.One of the elements in types is null.

types ist mehrdimensional.types is multidimensional.

- oder --or- modifiers ist mehrdimensional.modifiers is multidimensional.

- oder --or- types und modifiers weisen nicht die gleiche Länge auf.types and modifiers do not have the same length.

Beispiele

Im folgenden Beispiel wird der Typ von MyClass1abgerufen, das ConstructorInfo -Objekt abgerufen, das mit den angegebenen Bindungsflags übereinstimmt, und die Konstruktorsignatur wird angezeigt.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

Hinweise

Obwohl der Standard ParameterModifier Binder nicht verarbeitet (der modifiers -Parameter), können Sie die abstrakte System.Reflection.Binder -Klasse verwenden, um einen benutzerdefinierten Binder zu modifiersschreiben, der verarbeitet.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. ParameterModifierwird nur beim Aufrufen über COM-Interop verwendet, und nur Parameter, die als Verweis übermittelt werden, werden behandelt.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

Wenn keine genaue Entsprechung vorhanden ist, versucht binder , die types im Array angegebenen Parametertypen umzuleiten, damit eine Entsprechung ausgewählt wird.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. Wenn keine Entsprechung ausgewählt null werden kann, wird zurückgegeben. binderIf the binder is unable to select a match, then null is returned.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Konstruktoren in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Geben BindingFlags.Public Sie an, um öffentliche Konstruktoren in die Suche einzubeziehen.Specify BindingFlags.Public to include public constructors in the search.

  • Geben BindingFlags.NonPublic Sie an, um nicht öffentliche Konstruktoren (d. h. private, interne und geschützte Konstruktoren) in die Suche einzubeziehen.Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Um mithilfe dieser Methode den Klasseninitialisierer (statischer Konstruktor) zu erhalten, BindingFlags.Static müssenBindingFlags.Static Sie ( | BindingFlags.NonPublic Or BindingFlags.NonPublic in Visual Basic) angeben.To get the class initializer (static constructor) using this method, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.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. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.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. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Hinweis

Sie können Parameter nicht weglassen, wenn Sie Konstruktoren und Methoden suchen.You cannot omit parameters when looking up constructors and methods. Beim Aufrufen von können Sie nur Parameter weglassen.You can only omit parameters when invoking.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese ConstructorInfo Methode den mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the ConstructorInfo with the type parameters replaced by the appropriate type arguments. Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, gibt diese nullMethode immer zurück.If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Siehe auch

Gilt für: