Type.GetConstructors Metoda

Definice

Získá konstruktory aktuálního Type .Gets the constructors of the current Type.

Přetížení

GetConstructors()

Vrátí všechny veřejné konstruktory definované pro aktuální Type .Returns all the public constructors defined for the current Type.

GetConstructors(BindingFlags)

Při přepsání v odvozené třídě vyhledá konstruktory definované pro aktuální Type pomocí zadaného BindingFlags .When overridden in a derived class, searches for the constructors defined for the current Type, using the specified BindingFlags.

Příklady

Tento příklad ukazuje výstup GetConstructors() přetížení ze třídy, která má dva konstruktory instance a jeden statický konstruktor.This example shows the output of the GetConstructors() overload from a class that has two instance constructors and one static constructor.

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

   static t(){}

   t( int /*i*/ ){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors();
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++ )
   {
      Console::WriteLine( p[ i ]->IsStatic );

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

Výstup tohoto kódu je:The output of this code is:

2
False
False

Vzhledem k tomu, že GetConstructors přetížení používá pouze Public a Instance , statický konstruktor není počítán for výrazem ani není vyhodnocen pomocí IsStatic .Because the GetConstructors overload uses only Public and Instance, the static constructor is neither counted by the for expression nor evaluated by IsStatic.

Chcete-li najít statické konstruktory, použijte GetConstructors přetížení a předejte jí kombinaci (Logical or) BindingFlags.Public , BindingFlags.Static ,,, jak je BindingFlags.NonPublic BindingFlags.Instance znázorněno v následujícím příkladu kódu:To find static constructors, use the GetConstructors overload, and pass it the combination (logical OR) of BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, as shown in the following code example:

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

   t( int /*i*/ ){}

   static t(){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors( static_cast<BindingFlags>(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 );
   }
}
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);
        }
    }
}
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

Výstup je nyní:Now the output is:

3
False
True
False

GetConstructors()

Vrátí všechny veřejné konstruktory definované pro aktuální Type .Returns all the public constructors defined for the current Type.

public:
 cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public:
 virtual cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public System.Reflection.ConstructorInfo[] GetConstructors ();
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo[] GetConstructors ();
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()

Návraty

ConstructorInfo[]

Pole objektů, které ConstructorInfo představují všechny konstruktory veřejné instance definované pro aktuální Type , ale nezahrnují inicializátor typu (statický konstruktor).An array of ConstructorInfo objects representing all the public instance constructors defined for the current Type, but not including the type initializer (static constructor). Pokud nejsou definovány žádné konstruktory veřejné instance pro aktuální Type , nebo pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, je vrácena prázdné pole typu ConstructorInfo .If no public instance constructors are defined for the current Type, or if the current Type represents a type parameter in the definition of a generic type or generic method, an empty array of type ConstructorInfo is returned.

Implementuje

Atributy

Poznámky

GetConstructorsMetoda nevrací konstruktory v určitém pořadí, jako je například objednávka deklarace.The GetConstructors method does not return constructors in a particular order, such as declaration order. Váš kód nesmí záviset na pořadí, ve kterém jsou konstruktory vraceny, protože toto pořadí se liší.Your code must not depend on the order in which constructors are returned, because that order varies.

Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny Get metodami, pokud se odráží na typ.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Typ členuMember Type StaticStatic NestatickýNon-Static
KonstruktorConstructor NoNo NoNo
PoleField NoNo Yes.Yes. Pole je vždy skrýváno podle názvu a podpisu.A field is always hide-by-name-and-signature.
UdálostEvent NeuvedenoNot applicable Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu.Reflection treats properties as hide-by-name-and-signature. Viz poznámka 2 níže.See note 2 below.
MetodaMethod NoNo Yes.Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Vnořený typNested Type NoNo NoNo
VlastnostProperty NeuvedenoNot applicable Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu.Reflection treats properties as hide-by-name-and-signature. Viz poznámka 2 níže.See note 2 below.
  1. Skrývání podle názvu a podpisu bere v úvahu všechny části podpisu včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání.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. Jedná se o binární porovnání.This is a binary comparison.

  2. Pro účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu.For reflection, properties and events are hide-by-name-and-signature. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.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. Vlastní atributy nejsou součástí systému společných typů.Custom attributes are not part of the common type system.

Přetížení této metody volá GetConstructors(BindingFlags) přetížení metody s BindingFlags.Public | BindingFlags.Instance ( BindingFlags.Public Or BindingFlags.Instance v Visual Basic).This method overload calls the GetConstructors(BindingFlags) method overload, with BindingFlags.Public | BindingFlags.Instance (BindingFlags.PublicOrBindingFlags.Instance in Visual Basic). Nenalezne Inicializátory třídy (statický konstruktor).It will not find class initializers (static constructor). Chcete-li najít Inicializátory třídy, použijte přetížení, které přijímá BindingFlags , a zadejte BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic).To find class initializers, use an overload that takes BindingFlags, and specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.You can also get the class initializer using the TypeInitializer property.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda ConstructorInfo objekty s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the ConstructorInfo objects with the type parameters replaced by the appropriate type arguments. Například pokud C<T> má třída konstruktor C(T t1) ( Sub New(ByVal t1 As T) v Visual Basic), volání GetConstructors C<int> funkce vrátí hodnotu ConstructorInfo , která představuje C(int t1) v jazyce C# ( Sub New(ByVal t1 As Integer) v Visual Basic).For example, if class C<T> has a constructor C(T t1) (Sub New(ByVal t1 As T) in Visual Basic), calling GetConstructors on C<int> returns a ConstructorInfo that represents C(int t1) in C# (Sub New(ByVal t1 As Integer) in Visual Basic).

Pokud aktuální Type představuje parametr obecného typu, GetConstructors vrátí metoda prázdné pole.If the current Type represents a generic type parameter, the GetConstructors method returns an empty array.

Viz také

Platí pro

GetConstructors(BindingFlags)

Při přepsání v odvozené třídě vyhledá konstruktory definované pro aktuální Type pomocí zadaného BindingFlags .When overridden in a derived class, searches for the constructors defined for the current Type, using the specified BindingFlags.

public:
 abstract cli::array <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);
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()

Parametry

bindingAttr
BindingFlags

Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.A bitwise combination of the enumeration values that specify how the search is conducted.

-nebo--or- Default pro vrácení prázdného pole.Default to return an empty array.

Návraty

ConstructorInfo[]

Pole ConstructorInfo objektů reprezentující všechny konstruktory definované pro aktuální Type , které odpovídají zadaným omezením vazby, včetně inicializátoru typu, je-li definován.An array of ConstructorInfo objects representing all constructors defined for the current Type that match the specified binding constraints, including the type initializer if it is defined. Vrátí prázdné pole typu ConstructorInfo , pokud nejsou definovány žádné konstruktory pro aktuální Type , pokud žádný z definovaných konstruktorů neodpovídá omezením vazby, nebo pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody.Returns an empty array of type ConstructorInfo if no constructors are defined for the current Type, if none of the defined constructors match the binding constraints, or if the current Type represents a type parameter in the definition of a generic type or generic method.

Implementuje

Atributy

Poznámky

bindingAttr lze použít k určení, zda vracet pouze veřejné konstruktory nebo veřejné i neveřejné konstruktory.bindingAttr can be used to specify whether to return only public constructors or both public and non-public constructors.

Následující BindingFlags příznaky filtru lze použít k definování, které konstruktory se mají zahrnout do hledání:The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • Zadejte BindingFlags.Static společně s BindingFlags.NonPublic a získejte inicializátor třídy (statický konstruktor).Specify BindingFlags.Static along with BindingFlags.NonPublic to retrieve the class initializer (static constructor). Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.You can also get the class initializer using the TypeInitializer property.

  • Určete BindingFlags.Instance spolu s jedním nebo obojím BindingFlags.Public a BindingFlags.NonPublic k načtení konstruktorů instancí.Specify BindingFlags.Instance along with one or both of BindingFlags.Public and BindingFlags.NonPublic to retrieve instance constructors.

Další informace naleznete v tématu System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

GetConstructorsMetoda nevrací konstruktory v určitém pořadí, jako je například objednávka deklarace.The GetConstructors method does not return constructors in a particular order, such as declaration order. Váš kód nesmí záviset na pořadí, ve kterém jsou konstruktory vraceny, protože toto pořadí se liší.Your code must not depend on the order in which constructors are returned, because that order varies.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda ConstructorInfo objekty s parametry typu nahrazenými odpovídajícími argumenty typu.If the current Type represents a constructed generic type, this method returns the ConstructorInfo objects with the type parameters replaced by the appropriate type arguments. Například pokud C<T> má třída konstruktor C(T t1) ( Sub New(ByVal t1 As T) v Visual Basic), volání GetConstructors C<int> funkce vrátí hodnotu ConstructorInfo , která představuje C(int t1) v jazyce C# ( Sub New(ByVal t1 As Integer) v Visual Basic).For example, if class C<T> has a constructor C(T t1) (Sub New(ByVal t1 As T) in Visual Basic), calling GetConstructors on C<int> returns a ConstructorInfo that represents C(int t1) in C# (Sub New(ByVal t1 As Integer) in Visual Basic).

Pokud aktuální Type představuje parametr obecného typu, GetConstructors vrátí metoda prázdné pole.If the current Type represents a generic type parameter, the GetConstructors method returns an empty array.

Viz také

Platí pro