Freigeben über


Type.GetConstructor Methode

Definition

Ruft einen bestimmten Konstruktor des aktuellen Typeab.

Überlädt

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

Sucht nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden.

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

Sucht anhand der angegebenen Bindungseinschränkungen nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen.

GetConstructor(BindingFlags, Type[])

Sucht nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen entsprechen, wobei die angegebenen Bindungseinschränkungen verwendet werden.

GetConstructor(Type[])

Sucht nach einem öffentlichen Instanzkonstruktor, dessen Parameter den Typen im angegebenen Array entsprechen.

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

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Sucht nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden.

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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, Type[] types, 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);
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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * System.Reflection.CallingConventions * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
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
[<System.Runtime.InteropServices.ComVisible(true)>]
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

Parameter

bindingAttr
BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.

- oder -

Default zurückzugeben null.

binder
Binder

Ein Objekt, das eine Reihe von Eigenschaften definiert und die Bindung ermöglicht, was die Auswahl einer überladenen Methode, die Koersion von Argumenttypen und den Aufruf eines Elements durch Spiegelung umfassen kann.

- oder -

Ein Nullverweis (Nothing in Visual Basic) zur Verwendung der DefaultBinder.

callConvention
CallingConventions

Das Objekt, das den Satz von Regeln angibt, die für die Reihenfolge und das Layout von Argumenten verwendet werden sollen, wie der Rückgabewert übergeben wird, welche Register für Argumente verwendet werden, und der Stapel wird bereinigt.

types
Type[]

Ein Array von Type Objekten, die die Anzahl, Reihenfolge und den Typ der Parameter für den Konstruktor abrufen.

- oder -

Ein leeres Array des Typs Type (d. h. Type[] types = new Type[0]), um einen Konstruktor abzurufen, der keine Parameter akzeptiert.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier Objekten, die die Attribute darstellen, die dem entsprechenden Element im types Array zugeordnet sind. Der Standardordner verarbeitet diesen Parameter nicht.

Gibt zurück

Ein Objekt, das den Konstruktor darstellt, der den angegebenen Anforderungen entspricht, falls gefunden; andernfalls . null

Implementiert

Attribute

Ausnahmen

types ist null.

- oder -

Eines der Elemente in types ist null.

types ist multidimensional.

- oder -

modifiers ist multidimensional.

- oder -

types und modifiers haben nicht dieselbe Länge.

Beispiele

Im folgenden Beispiel wird der Typ von MyClass, ruft das ConstructorInfo Objekt ab und zeigt die Konstruktorsignatur an.

using System;
using System.Reflection;
using System.Security;

public class MyClass3
{
    public MyClass3(int i) { }
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass3);
            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 MyClass3 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass3 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);
        }
    }
}
open System
open System.Reflection
open System.Security

type MyClass1(i: int) = class end

try
    let myType = typeof<MyClass1>
    let types = [| typeof<int> |]
    // Get the public instance constructor that takes an integer parameter.
    let constructorInfoObj = myType.GetConstructor(BindingFlags.Instance ||| BindingFlags.Public, null, CallingConventions.HasThis, types, null)
    if constructorInfoObj <> null then
        printfn "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: \n{constructorInfoObj}"
    else
        printfn "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available."
with
| :? ArgumentNullException as e ->
    printfn $"ArgumentNullException: {e.Message}"
| :? ArgumentException as e ->
    printfn $"ArgumentException: {e.Message}"
| :? SecurityException as e ->
    printfn $"SecurityException: {e.Message}"
| e ->
    printfn $"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-Binder ParameterModifier (den modifiers Parameter) nicht verarbeitet, können Sie die abstrakte System.Reflection.Binder Klasse verwenden, um einen benutzerdefinierten Binder zu schreiben, der modifiers verarbeitet. ParameterModifier wird nur verwendet, wenn der Aufruf über die COM-Interoperabilität erfolgt, und nur Parameter, die als Referenz übergeben werden, werden behandelt.

Wenn keine genaue Übereinstimmung vorhanden ist, versucht der Versuch, die binder im types Array angegebenen Parametertypen zu koerzen, um eine Übereinstimmung auszuwählen. Wenn die binder Übereinstimmung nicht ausgewählt werden kann, wird sie null zurückgegeben.

Die folgenden BindingFlags Filterkennzeichnungen können verwendet werden, um zu definieren, welche Konstruktoren in die Suche einbezogen werden sollen:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.

  • Geben Sie an BindingFlags.Public , dass öffentliche Konstruktoren in die Suche einbezogen werden sollen.

  • Geben Sie an BindingFlags.NonPublic , dass nicht öffentliche Konstruktoren (d. h. private, interne und geschützte Konstruktoren) in die Suche einbezogen werden sollen.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Um den Klasseninitialisierer (statischer Konstruktor) mit dieser Methode abzurufen, müssen Sie (OrBindingFlags.NonPublicBindingFlags.Static in Visual Basic) angeben.BindingFlags.Static | BindingFlags.NonPublic Sie können den Klasseninitialisierer auch mit der TypeInitializer Eigenschaft abrufen.

Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn sie einen Typ widerspiegeln.

Mitgliedertyp Statisch Nicht statisch
Konstruktor No No
Feld No Ja. Ein Feld ist immer hide-by-name-and-signature.
Ereignis Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
Methode No Ja. Eine Methode (sowohl virtuell als auch nicht-virtuell) kann Hide-by-name oder Hide-by-name-and-signature sein.
Geschachtelter Typ No No
Eigentum Nicht anwendbar Die allgemeine Typsystemregel besteht darin, dass die Vererbung mit der der Methode identisch ist, die die Eigenschaft implementiert. Reflection behandelt Eigenschaften als Hide-by-Name-and-Signature. Siehe Hinweis 2 unten.
  1. Hide-by-name-and-signature berücksichtigt alle Elemente der Signatur, einschließlich angepasste Modifikatoren, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen. Dies ist ein binärer Vergleich.

  2. Bei der Reflection sind Eigenschaften und Ereignisse Hide-by-Name-and-Signature. Wenn Sie über eine Eigenschaft mit einem Get- und einem Set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen Get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter der Basisklasse zugreifen.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Hinweis

Parameter können beim Nachschlagen von Konstruktoren und Methoden nicht weggelassen werden. Sie können Parameter nur beim Aufrufen weglassen.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode den ConstructorInfo zurück, bei dem die Typparameter durch die entsprechenden Typargumente ersetzt sind. Wenn der aktuelle Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, gibt diese Methode immer zurück null.

Weitere Informationen

Gilt für:

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

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Sucht anhand der angegebenen Bindungseinschränkungen nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen.

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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, Type[] types, System.Reflection.ParameterModifier[]? modifiers);
public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, 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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructor : System.Reflection.BindingFlags * System.Reflection.Binder * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.ConstructorInfo
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
[<System.Runtime.InteropServices.ComVisible(true)>]
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

Parameter

bindingAttr
BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.

- oder -

Default zurückzugeben null.

binder
Binder

Ein Objekt, das eine Reihe von Eigenschaften definiert und die Bindung ermöglicht, was die Auswahl einer überladenen Methode, die Koersion von Argumenttypen und den Aufruf eines Elements durch Spiegelung umfassen kann.

- oder -

Ein Nullverweis (Nothing in Visual Basic) zur Verwendung der DefaultBinder.

types
Type[]

Ein Array von Type Objekten, die die Anzahl, Reihenfolge und den Typ der Parameter für den Konstruktor abrufen.

- oder -

Ein leeres Array des Typs Type (d. h. Type[] types = new Type[0]), um einen Konstruktor abzurufen, der keine Parameter akzeptiert.

- oder -

EmptyTypes.

modifiers
ParameterModifier[]

Ein Array von ParameterModifier Objekten, die die Attribute darstellen, die dem entsprechenden Element im Parametertyparray zugeordnet sind. Der Standardordner verarbeitet diesen Parameter nicht.

Gibt zurück

Ein ConstructorInfo Objekt, das den Konstruktor darstellt, der den angegebenen Anforderungen entspricht, falls gefunden; andernfalls . null

Implementiert

Attribute

Ausnahmen

types ist null.

- oder -

Eines der Elemente in types ist null.

types ist multidimensional.

- oder -

modifiers ist multidimensional.

- oder -

types und modifiers haben nicht dieselbe Länge.

Beispiele

Im folgenden Beispiel wird der Typ von MyClass, ruft das ConstructorInfo Objekt ab und zeigt die Konstruktorsignatur an.

using System;
using System.Reflection;
using System.Security;

public class MyClass2
{
    public MyClass2(int i) { }
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass2);
            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 MyClass2 that is public " +
                    "and takes an integer as a parameter is:");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of the MyClass2 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);
        }
    }
}
open System
open System.Reflection
open System.Security

type MyClass1(i: int) = class end

try
    let myType = typeof<MyClass1>
    let types = [| typeof<int> |]
    // Get the constructor that is public and takes an integer parameter.
    let constructorInfoObj = myType.GetConstructor(BindingFlags.Instance ||| BindingFlags.Public, null, types, null)
    if constructorInfoObj <> null then
        printfn "The constructor of MyClass1 that is public and takes an integer as a parameter is:\n{constructorInfoObj}"
    else
        printfn "The constructor of the MyClass1 that is public and takes an integer as a parameter is not available."
with
| :? ArgumentNullException as e ->
    printfn $"ArgumentNullException: {e.Message}"
| :? ArgumentException as e ->
    printfn $"ArgumentException: {e.Message}"
| :? SecurityException as e ->
    printfn $"SecurityException: {e.Message}"
| e ->
    printfn $"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

Hinweise

Wenn keine genaue Übereinstimmung vorhanden ist, versucht der Versuch, die binder im types Array angegebenen Parametertypen zu koerzen, um eine Übereinstimmung auszuwählen. Wenn die binder Übereinstimmung nicht ausgewählt werden kann, wird sie null zurückgegeben.

Die folgenden BindingFlags Filterkennzeichnungen können verwendet werden, um zu definieren, welche Konstruktoren in die Suche einbezogen werden sollen:

  • Sie müssen entweder BindingFlags.Instance oder BindingFlags.Static angeben, um eine Rückgabe zu erhalten.

  • Geben Sie an BindingFlags.Public , dass öffentliche Konstruktoren in die Suche einbezogen werden sollen.

  • Geben Sie an BindingFlags.NonPublic , dass nicht öffentliche Konstruktoren (d. h. private, interne und geschützte Konstruktoren) in die Suche einbezogen werden sollen.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Um den Klasseninitialisierer (statischer Konstruktor) mithilfe dieser Methodenüberladung abzurufen, müssen Sie (OrBindingFlags.NonPublicBindingFlags.Static in Visual Basic) angeben.BindingFlags.Static | BindingFlags.NonPublic Sie können den Klasseninitialisierer auch mit der TypeInitializer Eigenschaft abrufen.

Hinweis

Parameter können beim Nachschlagen von Konstruktoren und Methoden nicht weggelassen werden. Sie können Parameter nur beim Aufrufen weglassen.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode den ConstructorInfo zurück, bei dem die Typparameter durch die entsprechenden Typargumente ersetzt sind. Wenn der aktuelle Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, gibt diese Methode immer zurück null.

Weitere Informationen

Gilt für:

GetConstructor(BindingFlags, Type[])

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Sucht nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen entsprechen, wobei die angegebenen Bindungseinschränkungen verwendet werden.

public:
 System::Reflection::ConstructorInfo ^ GetConstructor(System::Reflection::BindingFlags bindingAttr, cli::array <Type ^> ^ types);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo? GetConstructor(System.Reflection.BindingFlags bindingAttr, Type[] types);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructor : System.Reflection.BindingFlags * Type[] -> System.Reflection.ConstructorInfo
Public Function GetConstructor (bindingAttr As BindingFlags, types As Type()) As ConstructorInfo

Parameter

bindingAttr
BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird. -or- Default to return null.

types
Type[]

Ein Array von Type-Objekten, die die Anzahl, Reihenfolge und den Typ der Parameter für den Konstruktor abrufen. -or- Ein leeres Array des Typs Type (d. h. Type[] types = Array.Empty{Type}()), um einen Konstruktor abzurufen, der keine Parameter akzeptiert. -oder- EmptyTypes.

Gibt zurück

Ein ConstructorInfo Objekt, das den Konstruktor darstellt, der den angegebenen Anforderungen entspricht, falls gefunden; andernfalls . null

Attribute

Gilt für:

GetConstructor(Type[])

Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs
Quelle:
Type.cs

Sucht nach einem öffentlichen Instanzkonstruktor, dessen Parameter den Typen im angegebenen Array entsprechen.

public:
 System::Reflection::ConstructorInfo ^ GetConstructor(cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::ConstructorInfo ^ GetConstructor(cli::array <Type ^> ^ types);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo? GetConstructor(Type[] types);
public System.Reflection.ConstructorInfo GetConstructor(Type[] types);
public System.Reflection.ConstructorInfo? GetConstructor(Type[] types);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo GetConstructor(Type[] types);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructor : Type[] -> System.Reflection.ConstructorInfo
member this.GetConstructor : Type[] -> System.Reflection.ConstructorInfo
abstract member GetConstructor : Type[] -> System.Reflection.ConstructorInfo
override this.GetConstructor : Type[] -> System.Reflection.ConstructorInfo
[<System.Runtime.InteropServices.ComVisible(true)>]
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, die die Anzahl, Reihenfolge und den Typ der Parameter für den gewünschten Konstruktor darstellen.

- oder -

Ein leeres Array von Type Objekten, um einen Konstruktor abzurufen, der keine Parameter akzeptiert. Ein solches leeres Array wird vom static Feld EmptyTypesbereitgestellt.

Gibt zurück

Ein Objekt, das den öffentlichen Instanzkonstruktor darstellt, dessen Parameter den Typen im Parametertyparray entsprechen, falls gefunden; andernfalls . null

Implementiert

Attribute

Ausnahmen

types ist null.

- oder -

Eines der Elemente in types ist null.

types ist multidimensional.

Beispiele

Im folgenden Beispiel wird der Typ von MyClass, ruft das ConstructorInfo Objekt ab und zeigt die Konstruktorsignatur an.

using System;
using System.Reflection;

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);
        }
    }
}
type MyClass1() =
    new (i: int) = MyClass1()

try
    let myType = typeof<MyClass1>
    let types = [| typeof<int> |]
    // Get the constructor that takes an integer as a parameter.
    let constructorInfoObj = myType.GetConstructor types
    if constructorInfoObj <> null then
        printfn "The constructor of MyClass1 that takes an integer as a parameter is: \n{constructorInfoObj}"
    else
        printfn "The constructor of MyClass1 that takes an integer as a parameter is not available."
with e ->
    printfn "Exception caught."
    printfn $"Source: {e.Source}"
    printfn $"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

Hinweise

Diese Methodenüberladung sucht nach öffentlichen Instanzkonstruktoren und kann nicht zum Abrufen eines Klasseninitialisierers (statischer Konstruktor) verwendet werden. Verwenden Sie zum Abrufen eines Klasseninitialisierers eine Überladung, die verwendet BindingFlagswird, und geben Sie (OrBindingFlags.NonPublicBindingFlags.Static in Visual Basic) an.BindingFlags.Static | BindingFlags.NonPublic Sie können den Klasseninitialisierer auch mit der TypeInitializer Eigenschaft abrufen.

Wenn der angeforderte Konstruktor nicht öffentlich ist, gibt diese Methode zurück null.

Hinweis

Parameter können beim Nachschlagen von Konstruktoren und Methoden nicht weggelassen werden. Sie können Parameter nur beim Aufrufen weglassen.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode den ConstructorInfo zurück, bei dem die Typparameter durch die entsprechenden Typargumente ersetzt sind. Wenn der aktuelle Parameter einen Typparameter in der Definition eines generischen Typs oder einer generischen Type Methode darstellt, gibt diese Methode immer zurück null.

Weitere Informationen

Gilt für: