Type.GetConstructors Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient les constructeurs du .Type
Surcharges
| Nom | Description |
|---|---|
| GetConstructors() |
Retourne tous les constructeurs publics définis pour le Typeactuel. |
| GetConstructors(BindingFlags) |
En cas de substitution dans une classe dérivée, recherche les constructeurs définis pour le Typeactuel, à l’aide de la |
Exemples
Cet exemple montre la sortie de la GetConstructors() surcharge à partir d’une classe qui a deux constructeurs d’instance et un constructeur statique.
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors();
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
type t() =
static do ()
new(i: int) = t ()
let p = typeof<t>.GetConstructors()
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(t).GetConstructors()
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
La sortie de ce code est la suivante :
2
False
False
Étant donné que la GetConstructors surcharge utilise uniquement Public et Instanceque le constructeur statique n’est ni compté par l’expression for ni évalué par IsStatic.
Pour rechercher des constructeurs statiques, utilisez la GetConstructors surcharge et transmettez-le la combinaison (OR logique) de BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, , BindingFlags.Instancecomme illustré dans l’exemple de code suivant :
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors(
BindingFlags.Public | BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
open System.Reflection
type t() =
static do ()
new (i: int) = t ()
let p = typeof<t>.GetConstructors(BindingFlags.Public ||| BindingFlags.Static ||| BindingFlags.NonPublic ||| BindingFlags.Instance)
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(T).GetConstructors( _
BindingFlags.Public Or _
BindingFlags.Static Or _
BindingFlags.NonPublic Or _
BindingFlags.Instance)
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
À présent, la sortie est la suivante :
3
False
True
False
GetConstructors()
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
Retourne tous les constructeurs publics définis pour le Typeactuel.
public:
cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public:
virtual cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo[] GetConstructors();
public System.Reflection.ConstructorInfo[] GetConstructors();
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo[] GetConstructors();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
Public Function GetConstructors () As ConstructorInfo()
Retours
Tableau d’objets ConstructorInfo représentant tous les constructeurs d’instance publique définis pour le current Type, mais sans inclure l’initialiseur de type (constructeur statique). Si aucun constructeur d’instance publique n’est défini pour le courant Typeou si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, un tableau de type ConstructorInfo vide est retourné.
Implémente
- Attributs
Remarques
Dans .NET 6 et versions antérieures, la GetConstructors méthode ne retourne pas de constructeurs dans un ordre particulier, tel que l’ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les constructeurs sont retournés, car cet ordre varie. Toutefois, à partir de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.
Le tableau suivant montre quels membres d'une classe de base sont retournés par les Get méthodes lors de la réflexion sur un type.
| Type de membre | Statique | Non statique |
|---|---|---|
| Constructor | Non | Non |
| Champ | Non | Yes. Un champ est toujours masqué par nom et signature. |
| Événement | Sans objet | La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous. |
| Méthode | Non | Yes. Une méthode (virtuelle et non virtuelle) peut être masquée par nom ou par nom et signature. |
| Type imbriqué | Non | Non |
| Propriété | Sans objet | La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous. |
Hide-by-name-and-signature prend en compte toutes les parties de la signature, notamment les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées. Il s’agit d’une comparaison binaire.
Pour la réflexion, les propriétés et les événements sont masqués par nom et signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée n’a qu’un accesseur get, la propriété de classe dérivée masque la propriété de classe de base et vous ne pourrez pas accéder au setter sur la classe de base.
Les attributs personnalisés ne font pas partie du système de type commun.
Cette surcharge de méthode appelle la GetConstructors(BindingFlags) surcharge de méthode, avec | BindingFlags.InstanceBindingFlags.Public(BindingFlags.PublicOrBindingFlags.Instance en Visual Basic). Il ne trouvera pas d’initialiseurs de classe (constructeur statique). Pour rechercher des initialiseurs de classe, utilisez une surcharge qui accepte BindingFlagset spécifiez | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic). Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.
Si le courant Type représente un type générique construit, cette méthode retourne les objets avec les ConstructorInfo paramètres de type remplacés par les arguments de type appropriés. Par exemple, si la classe C<T> a un constructeur C(T t1) (Sub New(ByVal t1 As T) en Visual Basic), l’appel à GetConstructors la C<int> fonction retourne un ConstructorInfo représentant C(int t1) en C# (Sub New(ByVal t1 As Integer) en Visual Basic).
Si le paramètre actuel Type représente un paramètre de type générique, la GetConstructors méthode retourne un tableau vide.
Voir aussi
- ConstructorInfo
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
S’applique à
GetConstructors(BindingFlags)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
En cas de substitution dans une classe dérivée, recherche les constructeurs définis pour le Typeactuel, à l’aide de la BindingFlagsspécifiée.
public:
abstract cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
[System.Runtime.InteropServices.ComVisible(true)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
Public MustOverride Function GetConstructors (bindingAttr As BindingFlags) As ConstructorInfo()
Paramètres
- bindingAttr
- BindingFlags
Combinaison de bits des valeurs d’énumération qui spécifient la façon dont la recherche est effectuée.
- ou -
Default pour retourner un tableau vide.
Retours
Tableau d’objets représentant tous les constructeurs définis pour le courant Type qui correspondent aux contraintes de ConstructorInfo liaison spécifiées, y compris l’initialiseur de type s’il est défini. Retourne un tableau de type ConstructorInfo vide si aucun constructeur n’est défini pour le constructeur actuel Type, si aucun des constructeurs définis ne correspond aux contraintes de liaison, ou si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique.
Implémente
- Attributs
Remarques
bindingAttr peut être utilisé pour spécifier s’il faut retourner uniquement des constructeurs publics ou des constructeurs publics et non publics.
Les indicateurs de filtre suivants BindingFlags peuvent être utilisés pour définir les constructeurs à inclure dans la recherche :
Spécifiez
BindingFlags.StaticavecBindingFlags.NonPublicpour récupérer l’initialiseur de classe (constructeur statique). Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.Spécifiez
BindingFlags.Instanceavec un ou les deux constructeurs d’instanceBindingFlags.PublicetBindingFlags.NonPublicpour récupérer des constructeurs d’instance.
Pour plus d’informations, consultez System.Reflection.BindingFlags.
Dans .NET 6 et versions antérieures, la GetConstructors méthode ne retourne pas de constructeurs dans un ordre particulier, tel que l’ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les constructeurs sont retournés, car cet ordre varie. Toutefois, à partir de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.
Si le courant Type représente un type générique construit, cette méthode retourne les objets avec les ConstructorInfo paramètres de type remplacés par les arguments de type appropriés. Par exemple, si la classe C<T> a un constructeur C(T t1) (Sub New(ByVal t1 As T) en Visual Basic), l’appel à GetConstructors la C<int> fonction retourne un ConstructorInfo représentant C(int t1) en C# (Sub New(ByVal t1 As Integer) en Visual Basic).
Si le paramètre actuel Type représente un paramètre de type générique, la GetConstructors méthode retourne un tableau vide.
Voir aussi
- ConstructorInfo
- BindingFlags
- DefaultBinder
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])