Type.GetConstructor Metoda

Definice

Získá konkrétní konstruktor aktuálního Type .Gets a specific constructor of the current Type.

Přetížení

GetConstructor(Type[])

Vyhledá konstruktor veřejné instance, jehož parametry odpovídají typům v zadaném poli.Searches for a public instance constructor whose parameters match the types in the specified array.

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

Vyhledá konstruktor, jehož parametry odpovídají zadaným typům a modifikátorům argumentů pomocí zadaných omezení vazby.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

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

Vyhledá konstruktor, jehož parametry odpovídají zadaným typům a modifikátorům argumentů, pomocí zadaných omezení vazby a zadané konvence volání.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

GetConstructor(Type[])

Vyhledá konstruktor veřejné instance, jehož parametry odpovídají typům v zadaném poli.Searches for a public instance constructor whose parameters match the types in the specified array.

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

Parametry

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů požadovaného konstruktoru.An array of Type objects representing the number, order, and type of the parameters for the desired constructor.

-nebo--or- Prázdné pole Type objektů pro získání konstruktoru, který nepřijímá žádné parametry.An empty array of Type objects, to get a constructor that takes no parameters. Toto prázdné pole je k dispozici v static poli EmptyTypes .Such an empty array is provided by the static field EmptyTypes.

Návraty

ConstructorInfo

Objekt představující konstruktor veřejné instance, jehož parametry odpovídají typům v poli typu parametru, pokud je nalezen; v opačném případě null .An object representing the public instance constructor whose parameters match the types in the parameter type array, if found; otherwise, null.

Implementuje

Atributy

Výjimky

types je null.types is null.

-nebo--or- Jeden z prvků v types je null .One of the elements in types is null.

Pole types je multidimenzionální.types is multidimensional.

Příklady

Následující příklad získá typ MyClass , získá ConstructorInfo objekt a zobrazí signaturu konstruktoru.The following example obtains the type of MyClass, gets the ConstructorInfo object, and displays the constructor signature.

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

   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the constructor that takes an integer as a parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( types );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that takes an integer as a parameter is: " );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of MyClass1 that takes an integer as a parameter is not available." );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception caught." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
}

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

public class MyClass1
{
    public MyClass1(){}
    public MyClass1(int i){}

    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the constructor that takes an integer as a parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(types);
            if (constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that takes an " +
                    "integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that takes an integer " +
                    "as a parameter is not available.");
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception caught.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
    }
}
Imports System.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

Poznámky

Přetížení této metody hledá konstruktory veřejné instance a nelze je použít k získání inicializátoru třídy (statického konstruktoru).This method overload looks for public instance constructors and cannot be used to obtain a class initializer (static constructor). Chcete-li získat inicializátor 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 get a class initializer, 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 je požadovaný konstruktor neveřejný, vrátí tato metoda null .If the requested constructor is non-public, this method returns null.

Poznámka

Při hledání konstruktorů a metod nelze parametry vynechávat.You cannot omit parameters when looking up constructors and methods. Můžete je vynechat pouze při vyvolání.You can only omit parameters when invoking.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda ConstructorInfo 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 with the type parameters replaced by the appropriate type arguments. Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vždy vrátí null .If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Viz také

Platí pro

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

Vyhledá konstruktor, jehož parametry odpovídají zadaným typům a modifikátorům argumentů pomocí zadaných omezení vazby.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

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

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 návrat null .Default to return null.

binder
Binder

Objekt, který definuje sadu vlastností a umožňuje vázání, jež může zahrnovat výběr přetěžované metody, vynucení typů argumentů a vyvolání členu prostřednictvím reflexe.An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

-nebo--or- Odkaz s hodnotou null ( Nothing v Visual Basic) pro použití DefaultBinder .A null reference (Nothing in Visual Basic), to use the DefaultBinder.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů, které má konstruktor získat.An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání konstruktoru, který nepřijímá žádné parametry.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

-nebo--or- EmptyTypes.EmptyTypes.

modifiers
ParameterModifier[]

Pole ParameterModifier objektů reprezentující atributy přidružené k odpovídajícímu prvku v poli typu parametru.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the parameter type array. Výchozí vázací objekt tento parametr nezpracovává.The default binder does not process this parameter.

Návraty

ConstructorInfo

ConstructorInfoObjekt představující konstruktor, který odpovídá zadaným požadavkům, pokud byl nalezen, v opačném případě null .A ConstructorInfo object representing the constructor that matches the specified requirements, if found; otherwise, null.

Implementuje

Atributy

Výjimky

types je null.types is null.

-nebo--or- Jeden z prvků v types je null .One of the elements in types is null.

Pole types je multidimenzionální.types is multidimensional.

-nebo--or- Pole modifiers je multidimenzionální.modifiers is multidimensional.

-nebo--or- types a nemají modifiers stejnou délku.types and modifiers do not have the same length.

Příklady

Následující příklad získá typ MyClass , získá ConstructorInfo objekt a zobrazí signaturu konstruktoru.The following example obtains the type of MyClass, gets the ConstructorInfo object, and displays the constructor signature.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the constructor that is public and takes an integer parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, types, nullptr );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that is public and takes an integer as a parameter is:" );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of the MyClass1 that is public and takes an integer as a parameter is not available." );
      }
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( ArgumentException^ e ) 
   {
      Console::WriteLine( "ArgumentException: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

public class MyClass1
{
    public MyClass1(int i){}
    public static void Main()
    {
        try
        {
            Type myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the constructor that is public and takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null, types, null);
            if (constructorInfoObj != null )
            {
                Console.WriteLine("The constructor of MyClass1 that is public " +
                    "and takes an integer as a parameter is:");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of the MyClass1 that is public " +
                    "and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Imports System.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

Poznámky

Pokud neexistuje přesná shoda, pokusí se aplikace převést binder typy parametrů zadané v poli, aby types bylo možné vybrat shodu.If an exact match does not exist, the binder will attempt to coerce the parameter types specified in the types array in order to select a match. Pokud binder není schopen vybrat shodu, null je vrácena.If the binder is unable to select a match, then null is returned.

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:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Zadejte BindingFlags.Public , chcete-li do hledání zahrnout veřejné konstruktory.Specify BindingFlags.Public to include public constructors in the search.

  • Určete BindingFlags.NonPublic , že se mají do hledání zahrnout neveřejné konstruktory (tj. privátní, interní a chráněné konstruktory).Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

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

Chcete-li získat inicializátor třídy (statický konstruktor) pomocí tohoto přetížení metody, je nutné zadat BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic).To get the class initializer (static constructor) using this method overload, you must 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.

Poznámka

Při hledání konstruktorů a metod nelze parametry vynechávat.You cannot omit parameters when looking up constructors and methods. Můžete je vynechat pouze při vyvolání.You can only omit parameters when invoking.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda ConstructorInfo 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 with the type parameters replaced by the appropriate type arguments. Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vždy vrátí null .If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Viz také

Platí pro

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

Vyhledá konstruktor, jehož parametry odpovídají zadaným typům a modifikátorům argumentů, pomocí zadaných omezení vazby a zadané konvence volání.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

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

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 návrat null .Default to return null.

binder
Binder

Objekt, který definuje sadu vlastností a umožňuje vázání, jež může zahrnovat výběr přetěžované metody, vynucení typů argumentů a vyvolání členu prostřednictvím reflexe.An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

-nebo--or- Odkaz s hodnotou null ( Nothing v Visual Basic) pro použití DefaultBinder .A null reference (Nothing in Visual Basic), to use the DefaultBinder.

callConvention
CallingConventions

Objekt, který určuje sadu pravidel, která se má použít pro pořadí a rozložení argumentů, způsob předání návratové hodnoty, jaké Registry se používají pro argumenty a zásobník se vyčistí.The object that specifies the set of rules to use regarding the order and layout of arguments, how the return value is passed, what registers are used for arguments, and the stack is cleaned up.

types
Type[]

Pole Type objektů představujících počet, pořadí a typ parametrů, které má konstruktor získat.An array of Type objects representing the number, order, and type of the parameters for the constructor to get.

-nebo--or- Prázdné pole typu Type (to znamená typ [] typy = nový typ [0]) pro získání konstruktoru, který nepřijímá žádné parametry.An empty array of the type Type (that is, Type[] types = new Type[0]) to get a constructor that takes no parameters.

modifiers
ParameterModifier[]

Pole ParameterModifier objektů reprezentující atributy přidružené k odpovídajícímu prvku v types poli.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. Výchozí vázací objekt tento parametr nezpracovává.The default binder does not process this parameter.

Návraty

ConstructorInfo

Objekt představující konstruktor, který odpovídá zadaným požadavkům, pokud byl nalezen; v opačném případě null .An object representing the constructor that matches the specified requirements, if found; otherwise, null.

Implementuje

Atributy

Výjimky

types je null.types is null.

-nebo--or- Jeden z prvků v types je null .One of the elements in types is null.

Pole types je multidimenzionální.types is multidimensional.

-nebo--or- Pole modifiers je multidimenzionální.modifiers is multidimensional.

-nebo--or- types a nemají modifiers stejnou délku.types and modifiers do not have the same length.

Příklady

Následující příklad získá typ MyClass , získá ConstructorInfo objekt a zobrazí signaturu konstruktoru.The following example obtains the type of MyClass, gets the ConstructorInfo object, and displays the constructor signature.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the public instance constructor that takes an integer parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, CallingConventions::HasThis, types, nullptr );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: " );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available." );
      }
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( ArgumentException^ e ) 
   {
      Console::WriteLine( "ArgumentException: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

public class MyClass1
{
    public MyClass1(int i){}
    public static void Main()
    {
        try
        {
            Type  myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if(constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that is a public instance " +
                    "method and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Public Class MyClass1
    Public Sub New(ByVal i As Integer)
    End Sub
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            Dim types(0) As Type
            types(0) = GetType(Integer)
            ' Get the public instance constructor that takes an integer parameter.
            Dim constructorInfoObj As ConstructorInfo = _
                        myType.GetConstructor(BindingFlags.Instance Or _
                        BindingFlags.Public, Nothing, _
                        CallingConventions.HasThis, types, Nothing)
            If Not (constructorInfoObj Is Nothing) Then
                Console.WriteLine("The constructor of MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is: ")
                Console.WriteLine(constructorInfoObj.ToString())
            Else
                Console.WriteLine("The constructor MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is not available.")
            End If
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As ArgumentException
            Console.WriteLine("ArgumentException: " + e.Message)
        Catch e As SecurityException
            Console.WriteLine("SecurityException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub
End Class

Poznámky

I když výchozí pořadač nezpracovává ParameterModifier ( modifiers parametr), můžete použít abstraktní System.Reflection.Binder třídu k zápisu vlastního pořadače, který zpracovává proces modifiers .Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier se používá pouze při volání prostřednictvím zprostředkovatele komunikace s objekty COM a jsou zpracovávány pouze parametry, které jsou předány odkazem.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

Pokud neexistuje přesná shoda, pokusí se aplikace převést binder typy parametrů zadané v poli, aby types bylo možné vybrat shodu.If an exact match does not exist, the binder will attempt to coerce the parameter types specified in the types array in order to select a match. Pokud binder není schopen vybrat shodu, null je vrácena.If the binder is unable to select a match, then null is returned.

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:

  • BindingFlags.Instance BindingFlags.Static Chcete-li získat návrat, je nutné zadat buď nebo.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Zadejte BindingFlags.Public , chcete-li do hledání zahrnout veřejné konstruktory.Specify BindingFlags.Public to include public constructors in the search.

  • Určete BindingFlags.NonPublic , že se mají do hledání zahrnout neveřejné konstruktory (tj. privátní, interní a chráněné konstruktory).Specify BindingFlags.NonPublic to include non-public constructors (that is, private, internal, and protected constructors) in the search.

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

Chcete-li získat inicializátor třídy (statický konstruktor) pomocí této metody, je nutné zadat BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic v Visual Basic).To get the class initializer (static constructor) using this method, you must 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.

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.

Poznámka

Při hledání konstruktorů a metod nelze parametry vynechávat.You cannot omit parameters when looking up constructors and methods. Můžete je vynechat pouze při vyvolání.You can only omit parameters when invoking.

Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda ConstructorInfo 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 with the type parameters replaced by the appropriate type arguments. Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vždy vrátí null .If the current Type represents a type parameter in the definition of a generic type or generic method, this method always returns null.

Viz také

Platí pro