Type.GetConstructor Methode

Definitie

Hiermee haalt u een specifieke constructor van de huidige Typeop.

Overloads

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

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen en modifiers, met behulp van de opgegeven bindingsbeperkingen en de opgegeven aanroepconventie.

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

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen en modifiers, met behulp van de opgegeven bindingsbeperkingen.

GetConstructor(Type[])

Zoekt naar een constructor van een openbaar exemplaar waarvan de parameters overeenkomen met de typen in de opgegeven matrix.

GetConstructor(BindingFlags, Type[])

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen, met behulp van de opgegeven bindingsbeperkingen.

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

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen en modifiers, met behulp van de opgegeven bindingsbeperkingen en de opgegeven aanroepconventie.

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

Parameters

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.

– of –

Default om terug te keren null.

binder
Binder

Een object dat een set eigenschappen definieert en binding mogelijk maakt, waarbij een overbelaste methode, dwang van argumenttypen en het aanroepen van een lid via weerspiegeling kan worden geselecteerd.

– of –

Een null-verwijzing (Nothing in Visual Basic) om de DefaultBinder te gebruiken.

callConvention
CallingConventions

Het object dat de set regels specificeert die moeten worden gebruikt met betrekking tot de volgorde en indeling van argumenten, hoe de retourwaarde wordt doorgegeven, welke registers worden gebruikt voor argumenten en de stack wordt opgeschoond.

types
Type[]

Een matrix met Type objecten die het getal, de volgorde en het type van de parameters vertegenwoordigen die de constructor moet ophalen.

– of –

Een lege matrix van het type Type (dat wil gezegd, Type[] types = new Type[0]) om een constructor op te halen die geen parameters gebruikt.

modifiers
ParameterModifier[]

Een matrix met ParameterModifier objecten die de kenmerken vertegenwoordigen die zijn gekoppeld aan het bijbehorende element in de types matrix. Deze parameter wordt niet verwerkt door de standaard binder.

Retouren

Een object dat de constructor vertegenwoordigt die overeenkomt met de opgegeven vereisten, indien gevonden; anders, null.

Implementeringen

Kenmerken

Uitzonderingen

types is null.

– of –

Een van de elementen in types is null.

types is multidimensionaal.

– of –

modifiers is multidimensionaal.

– of –

types en modifiers niet dezelfde lengte hebben.

Voorbeelden

In het volgende voorbeeld wordt het type MyClassopgehaald, het ConstructorInfo object opgehaald en de constructorhandtekening weergegeven.

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

Opmerkingen

Hoewel de standaardbinder ParameterModifier (het modifiers-argument) niet verwerkt, kunt u de abstracte klasse System.Reflection.Binder gebruiken om een aangepaste binder te schrijven die modifiers wel verwerkt. ParameterModifier wordt alleen gebruikt bij het aanroepen via COM-interop en alleen parameters die worden doorgegeven door verwijzing, worden verwerkt.

Als er geen exacte overeenkomst bestaat, probeert de binder parametertypen die in de types matrix zijn opgegeven, te dwingen om een overeenkomst te selecteren. Als de binder overeenkomst niet kan worden geselecteerd, null wordt deze geretourneerd.

De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke constructors moeten worden opgenomen in de zoekopdracht:

  • U moet of BindingFlags.Instance of BindingFlags.Static opgeven om een retour te krijgen.

  • Geef BindingFlags.Public op dat openbare constructors moeten worden opgenomen in de zoekopdracht.

  • Geef op BindingFlags.NonPublic dat er niet-openbare constructors (dat wil gezegd privé-, interne en beveiligde constructors) moeten worden opgenomen in de zoekopdracht.

Zie System.Reflection.BindingFlags voor meer informatie.

Als u de klasse-initialisatiefunctie (statische constructor) wilt ophalen met deze methode, moet u BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

In de volgende tabel ziet u welke leden van een basisklasse worden geretourneerd door de Get methoden bij het weergeven van een type.

Lidmaatschapssoort Static Niet-statisch
Constructeur No No
Veld No Yes. Een veld wordt altijd verborgen op basis van naam en kenmerk.
Gebeurtenis Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
Methode No Yes. Een methode (zowel virtueel als niet-virtueel) kan worden verborgen op basis van naam of op basis van naam en handtekening.
Geneste type No No
Vastgoed Niet van toepassing De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder.
  1. Hide-by-name-and-signature beschouwt alle onderdelen van de handtekening, waaronder aangepaste modifiers, retourtypen, parametertypen, sentinels en onbeheerde aanroepconventies. Dit is een binaire vergelijking.

  2. Voor reflectie worden eigenschappen en gebeurtenissen verborgen op basis van naam en signatuur. Als u een eigenschap hebt met zowel een get als een set accessor in de basisklasse, maar de afgeleide klasse alleen een get-accessor heeft, verbergt de eigenschap afgeleide klasse de eigenschap basisklasse en hebt u geen toegang tot de setter op de basisklasse.

  3. Aangepaste kenmerken maken geen deel uit van het algemene typesysteem.

Note

U kunt parameters niet weglaten bij het opzoeken van constructors en methoden. U kunt alleen parameters weglaten bij het aanroepen.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de ConstructorInfo met typeparameters vervangen door de geschikte typeargumenten. Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, retourneert nulldeze methode altijd .

Zie ook

Van toepassing op

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

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen en modifiers, met behulp van de opgegeven bindingsbeperkingen.

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

Parameters

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.

– of –

Default om terug te keren null.

binder
Binder

Een object dat een set eigenschappen definieert en binding mogelijk maakt, waarbij een overbelaste methode, dwang van argumenttypen en het aanroepen van een lid via weerspiegeling kan worden geselecteerd.

– of –

Een null-verwijzing (Nothing in Visual Basic) om de DefaultBinder te gebruiken.

types
Type[]

Een matrix met Type objecten die het getal, de volgorde en het type van de parameters vertegenwoordigen die de constructor moet ophalen.

– of –

Een lege matrix van het type Type (dat wil gezegd, Type[] types = new Type[0]) om een constructor op te halen die geen parameters gebruikt.

– of –

EmptyTypes.

modifiers
ParameterModifier[]

Een matrix met ParameterModifier objecten die de kenmerken vertegenwoordigen die zijn gekoppeld aan het bijbehorende element in de parametertypematrix. Deze parameter wordt niet verwerkt door de standaard binder.

Retouren

Een ConstructorInfo object dat de constructor vertegenwoordigt die overeenkomt met de opgegeven vereisten, indien gevonden; nullanders.

Implementeringen

Kenmerken

Uitzonderingen

types is null.

– of –

Een van de elementen in types is null.

types is multidimensionaal.

– of –

modifiers is multidimensionaal.

– of –

types en modifiers niet dezelfde lengte hebben.

Voorbeelden

In het volgende voorbeeld wordt het type MyClassopgehaald, het ConstructorInfo object opgehaald en de constructorhandtekening weergegeven.

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

Opmerkingen

Als er geen exacte overeenkomst bestaat, probeert de binder parametertypen die in de types matrix zijn opgegeven, te dwingen om een overeenkomst te selecteren. Als de binder overeenkomst niet kan worden geselecteerd, null wordt deze geretourneerd.

De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke constructors moeten worden opgenomen in de zoekopdracht:

  • U moet of BindingFlags.Instance of BindingFlags.Static opgeven om een retour te krijgen.

  • Geef BindingFlags.Public op dat openbare constructors moeten worden opgenomen in de zoekopdracht.

  • Geef op BindingFlags.NonPublic dat er niet-openbare constructors (dat wil gezegd privé-, interne en beveiligde constructors) moeten worden opgenomen in de zoekopdracht.

Zie System.Reflection.BindingFlags voor meer informatie.

Als u de klasse-initializer (statische constructor) wilt ophalen met deze overbelasting van de methode, moet u BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

Note

U kunt parameters niet weglaten bij het opzoeken van constructors en methoden. U kunt alleen parameters weglaten bij het aanroepen.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de ConstructorInfo met typeparameters vervangen door de geschikte typeargumenten. Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, retourneert nulldeze methode altijd .

Zie ook

Van toepassing op

GetConstructor(Type[])

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Zoekt naar een constructor van een openbaar exemplaar waarvan de parameters overeenkomen met de typen in de opgegeven matrix.

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

Parameters

types
Type[]

Een matrix van Type objecten die het getal, de volgorde en het type van de parameters voor de gewenste constructor vertegenwoordigen.

– of –

Een lege matrix met Type objecten om een constructor op te halen waarvoor geen parameters nodig zijn. Een dergelijke lege matrix wordt geleverd door het static veld EmptyTypes.

Retouren

Een object dat de constructor van het openbare exemplaar vertegenwoordigt waarvan de parameters overeenkomen met de typen in de matrix van het parametertype, indien gevonden; anders, null.

Implementeringen

Kenmerken

Uitzonderingen

types is null.

– of –

Een van de elementen in types is null.

types is multidimensionaal.

Voorbeelden

In het volgende voorbeeld wordt het type MyClassopgehaald, het ConstructorInfo object opgehaald en de constructorhandtekening weergegeven.

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

Opmerkingen

Deze overbelasting van de methode zoekt naar constructors van openbare exemplaren en kan niet worden gebruikt om een klasse-initialisatiefunctie (statische constructor) te verkrijgen. Als u een klasse-initializer wilt ophalen, gebruikt u een overbelasting die BindingFlags gebruikt en geeft u BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.

Als de aangevraagde constructor niet openbaar is, retourneert nulldeze methode .

Note

U kunt parameters niet weglaten bij het opzoeken van constructors en methoden. U kunt alleen parameters weglaten bij het aanroepen.

Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de ConstructorInfo met typeparameters vervangen door de geschikte typeargumenten. Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, retourneert nulldeze methode altijd .

Zie ook

Van toepassing op

GetConstructor(BindingFlags, Type[])

Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs
Bron:
Type.cs

Zoekt naar een constructor waarvan de parameters overeenkomen met de opgegeven argumenttypen, met behulp van de opgegeven bindingsbeperkingen.

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

Parameters

bindingAttr
BindingFlags

Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd. -of- Standaard om te retourneren null.

types
Type[]

Een matrix van typeobjecten die het aantal, de volgorde en het type van de parameters vertegenwoordigen die de constructor moet ophalen. -of- Een lege matrix van het type Type (dat wil gezegd, Type[] typen = Array.Empty{Type}()) om een constructor op te halen waarvoor geen parameters nodig zijn. -of- EmptyTypes.

Retouren

Een ConstructorInfo object dat de constructor vertegenwoordigt die overeenkomt met de opgegeven vereisten, indien gevonden; nullanders.

Kenmerken

Van toepassing op