GenericTypeParameterBuilder Clase

Definición

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

public ref class GenericTypeParameterBuilder sealed : Type
public ref class GenericTypeParameterBuilder sealed : System::Reflection::TypeInfo
public ref class GenericTypeParameterBuilder abstract : System::Reflection::TypeInfo
public sealed class GenericTypeParameterBuilder : Type
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
public abstract class GenericTypeParameterBuilder : System.Reflection.TypeInfo
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : Type
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
type GenericTypeParameterBuilder = class
    inherit Type
type GenericTypeParameterBuilder = class
    inherit TypeInfo
[<System.Runtime.InteropServices.ComVisible(true)>]
type GenericTypeParameterBuilder = class
    inherit Type
[<System.Runtime.InteropServices.ComVisible(true)>]
type GenericTypeParameterBuilder = class
    inherit TypeInfo
Public NotInheritable Class GenericTypeParameterBuilder
Inherits Type
Public NotInheritable Class GenericTypeParameterBuilder
Inherits TypeInfo
Public MustInherit Class GenericTypeParameterBuilder
Inherits TypeInfo
Herencia
GenericTypeParameterBuilder
Herencia
GenericTypeParameterBuilder
Herencia
GenericTypeParameterBuilder
Atributos

Ejemplos

En el ejemplo de código siguiente se crea un tipo genérico con dos parámetros de tipo y se guardan en el ensamblado GenericEmitExample1.dll. Puede usar el Ildasm.exe (Desensamblador de IL) para ver los tipos generados. Para obtener una explicación más detallada de los pasos implicados en la definición de un tipo genérico dinámico, vea How to: Define a Generic Type with Reflection Emit.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Collections::Generic;

// Dummy class to satisfy TFirst constraints.
//
public ref class Example {};

// Define a trivial base class and two trivial interfaces 
// to use when demonstrating constraints.
//
public ref class ExampleBase {};
public interface class IExampleA {};
public interface class IExampleB {};

// Define a trivial type that can substitute for type parameter 
// TSecond.
//
public ref class ExampleDerived : ExampleBase, IExampleA, IExampleB {};

// List the constraint flags. The GenericParameterAttributes
// enumeration contains two sets of attributes, variance and
// constraints. For this example, only constraints are used.
//
static void ListConstraintAttributes( Type^ t )
{
   // Mask off the constraint flags. 
   GenericParameterAttributes constraints = 
       t->GenericParameterAttributes & 
       GenericParameterAttributes::SpecialConstraintMask;

   if ((constraints & GenericParameterAttributes::ReferenceTypeConstraint)
           != GenericParameterAttributes::None)
       Console::WriteLine( L"    ReferenceTypeConstraint");

   if ((constraints & GenericParameterAttributes::NotNullableValueTypeConstraint)
           != GenericParameterAttributes::None)
       Console::WriteLine( L"    NotNullableValueTypeConstraint");

   if ((constraints & GenericParameterAttributes::DefaultConstructorConstraint)
           != GenericParameterAttributes::None)
       Console::WriteLine( L"    DefaultConstructorConstraint");
}

static void DisplayGenericParameters( Type^ t )
{
   if (!t->IsGenericType)
   {
       Console::WriteLine( L"Type '{0}' is not generic." );
       return;
   }
   if (!t->IsGenericTypeDefinition)
       t = t->GetGenericTypeDefinition();

   array<Type^>^ typeParameters = t->GetGenericArguments();
   Console::WriteLine( L"\r\nListing {0} type parameters for type '{1}'.", 
       typeParameters->Length, t );

   for each ( Type^ tParam in typeParameters )
   {
       Console::WriteLine( L"\r\nType parameter {0}:", 
           tParam->ToString() );

       for each (Type^ c in tParam->GetGenericParameterConstraints())
       {
           if (c->IsInterface)
               Console::WriteLine( L"    Interface constraint: {0}", c);
           else
               Console::WriteLine( L"    Base type constraint: {0}", c);
       }
       ListConstraintAttributes(tParam);
   }
}

void main()
{
   // Define a dynamic assembly to contain the sample type. The
   // assembly will be run and also saved to disk, so
   // AssemblyBuilderAccess.RunAndSave is specified.
   //
   AppDomain^ myDomain = AppDomain::CurrentDomain;
   AssemblyName^ myAsmName = gcnew AssemblyName( L"GenericEmitExample1" );
   AssemblyBuilder^ myAssembly = myDomain->DefineDynamicAssembly( 
       myAsmName, AssemblyBuilderAccess::RunAndSave );

   // An assembly is made up of executable modules. For a single-
   // module assembly, the module name and file name are the same 
   // as the assembly name. 
   //
   ModuleBuilder^ myModule = myAssembly->DefineDynamicModule( 
       myAsmName->Name, String::Concat( myAsmName->Name, L".dll" ) );

   // Get type objects for the base class trivial interfaces to
   // be used as constraints.
   //
   Type^ baseType = ExampleBase::typeid; 
   Type^ interfaceA = IExampleA::typeid; 
   Type^ interfaceB = IExampleB::typeid;
   
   // Define the sample type.
   //
   TypeBuilder^ myType = myModule->DefineType( L"Sample", 
       TypeAttributes::Public );
   
   Console::WriteLine( L"Type 'Sample' is generic: {0}", 
       myType->IsGenericType );
   
   // Define type parameters for the type. Until you do this, 
   // the type is not generic, as the preceding and following 
   // WriteLine statements show. The type parameter names are
   // specified as an array of strings. To make the code
   // easier to read, each GenericTypeParameterBuilder is placed
   // in a variable with the same name as the type parameter.
   // 
   array<String^>^typeParamNames = {L"TFirst",L"TSecond"};
   array<GenericTypeParameterBuilder^>^typeParams = 
       myType->DefineGenericParameters( typeParamNames );

   GenericTypeParameterBuilder^ TFirst = typeParams[0];
   GenericTypeParameterBuilder^ TSecond = typeParams[1];

   Console::WriteLine( L"Type 'Sample' is generic: {0}", 
       myType->IsGenericType );
   
   // Apply constraints to the type parameters.
   //
   // A type that is substituted for the first parameter, TFirst,
   // must be a reference type and must have a parameterless
   // constructor.
   TFirst->SetGenericParameterAttributes( 
       GenericParameterAttributes::DefaultConstructorConstraint | 
       GenericParameterAttributes::ReferenceTypeConstraint 
   );

   // A type that is substituted for the second type
   // parameter must implement IExampleA and IExampleB, and
   // inherit from the trivial test class ExampleBase. The
   // interface constraints are specified as an array
   // containing the interface types. 
   array<Type^>^interfaceTypes = { interfaceA, interfaceB };
   TSecond->SetInterfaceConstraints( interfaceTypes );
   TSecond->SetBaseTypeConstraint( baseType );

   // The following code adds a private field named ExampleField,
   // of type TFirst.
   FieldBuilder^ exField = 
       myType->DefineField("ExampleField", TFirst, 
           FieldAttributes::Private);

   // Define a static method that takes an array of TFirst and 
   // returns a List<TFirst> containing all the elements of 
   // the array. To define this method it is necessary to create
   // the type List<TFirst> by calling MakeGenericType on the
   // generic type definition, generic<T> List. 
   // The parameter type is created by using the
   // MakeArrayType method. 
   //
   Type^ listOf = List::typeid;
   Type^ listOfTFirst = listOf->MakeGenericType(TFirst);
   array<Type^>^ mParamTypes = { TFirst->MakeArrayType() };

   MethodBuilder^ exMethod = 
       myType->DefineMethod("ExampleMethod", 
           MethodAttributes::Public | MethodAttributes::Static, 
           listOfTFirst, 
           mParamTypes);

   // Emit the method body. 
   // The method body consists of just three opcodes, to load 
   // the input array onto the execution stack, to call the 
   // List<TFirst> constructor that takes IEnumerable<TFirst>,
   // which does all the work of putting the input elements into
   // the list, and to return, leaving the list on the stack. The
   // hard work is getting the constructor.
   // 
   // The GetConstructor method is not supported on a 
   // GenericTypeParameterBuilder, so it is not possible to get 
   // the constructor of List<TFirst> directly. There are two
   // steps, first getting the constructor of generic<T> List and then
   // calling a method that converts it to the corresponding 
   // constructor of List<TFirst>.
   //
   // The constructor needed here is the one that takes an
   // IEnumerable<T>. Note, however, that this is not the 
   // generic type definition of generic<T> IEnumerable; instead, the
   // T from generic<T> List must be substituted for the T of 
   // generic<T> IEnumerable. (This seems confusing only because both
   // types have type parameters named T. That is why this example
   // uses the somewhat silly names TFirst and TSecond.) To get
   // the type of the constructor argument, take the generic
   // type definition generic<T> IEnumerable and 
   // call MakeGenericType with the first generic type parameter
   // of generic<T> List. The constructor argument list must be passed
   // as an array, with just one argument in this case.
   // 
   // Now it is possible to get the constructor of generic<T> List,
   // using GetConstructor on the generic type definition. To get
   // the constructor of List<TFirst>, pass List<TFirst> and
   // the constructor from generic<T> List to the static
   // TypeBuilder.GetConstructor method.
   //
   ILGenerator^ ilgen = exMethod->GetILGenerator();
        
   Type^ ienumOf = IEnumerable::typeid;
   Type^ TfromListOf = listOf->GetGenericArguments()[0];
   Type^ ienumOfT = ienumOf->MakeGenericType(TfromListOf);
   array<Type^>^ ctorArgs = {ienumOfT};

   ConstructorInfo^ ctorPrep = listOf->GetConstructor(ctorArgs);
   ConstructorInfo^ ctor = 
       TypeBuilder::GetConstructor(listOfTFirst, ctorPrep);

   ilgen->Emit(OpCodes::Ldarg_0);
   ilgen->Emit(OpCodes::Newobj, ctor);
   ilgen->Emit(OpCodes::Ret);

   // Create the type and save the assembly. 
   Type^ finished = myType->CreateType();
   myAssembly->Save( String::Concat( myAsmName->Name, L".dll" ) );

   // Invoke the method.
   // ExampleMethod is not generic, but the type it belongs to is
   // generic, so in order to get a MethodInfo that can be invoked
   // it is necessary to create a constructed type. The Example 
   // class satisfies the constraints on TFirst, because it is a 
   // reference type and has a default constructor. In order to
   // have a class that satisfies the constraints on TSecond, 
   // this code example defines the ExampleDerived type. These
   // two types are passed to MakeGenericMethod to create the
   // constructed type.
   //
   array<Type^>^ typeArgs = 
       { Example::typeid, ExampleDerived::typeid };
   Type^ constructed = finished->MakeGenericType(typeArgs);
   MethodInfo^ mi = constructed->GetMethod("ExampleMethod");

   // Create an array of Example objects, as input to the generic
   // method. This array must be passed as the only element of an 
   // array of arguments. The first argument of Invoke is 
   // null, because ExampleMethod is static. Display the count
   // on the resulting List<Example>.
   // 
   array<Example^>^ input = { gcnew Example(), gcnew Example() };
   array<Object^>^ arguments = { input };

   List<Example^>^ listX = 
       (List<Example^>^) mi->Invoke(nullptr, arguments);

   Console::WriteLine(
       "\nThere are {0} elements in the List<Example>.", 
       listX->Count);

   DisplayGenericParameters(finished);
}

/* This code example produces the following output:

Type 'Sample' is generic: False
Type 'Sample' is generic: True

There are 2 elements in the List<Example>.

Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.

Type parameter TFirst:
    ReferenceTypeConstraint
    DefaultConstructorConstraint

Type parameter TSecond:
    Interface constraint: IExampleA
    Interface constraint: IExampleB
    Base type constraint: ExampleBase
 */
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Collections.Generic;

// Define a trivial base class and two trivial interfaces
// to use when demonstrating constraints.
//
public class ExampleBase {}

public interface IExampleA {}

public interface IExampleB {}

// Define a trivial type that can substitute for type parameter
// TSecond.
//
public class ExampleDerived : ExampleBase, IExampleA, IExampleB {}

public class Example
{
    public static void Main()
    {
        // Define a dynamic assembly to contain the sample type. The
        // assembly will not be run, but only saved to disk, so
        // AssemblyBuilderAccess.Save is specified.
        //
        AppDomain myDomain = AppDomain.CurrentDomain;
        AssemblyName myAsmName = new AssemblyName("GenericEmitExample1");
        AssemblyBuilder myAssembly =
            myDomain.DefineDynamicAssembly(myAsmName,
                AssemblyBuilderAccess.RunAndSave);

        // An assembly is made up of executable modules. For a single-
        // module assembly, the module name and file name are the same
        // as the assembly name.
        //
        ModuleBuilder myModule =
            myAssembly.DefineDynamicModule(myAsmName.Name,
               myAsmName.Name + ".dll");

        // Get type objects for the base class trivial interfaces to
        // be used as constraints.
        //
        Type baseType = typeof(ExampleBase);
        Type interfaceA = typeof(IExampleA);
        Type interfaceB = typeof(IExampleB);

        // Define the sample type.
        //
        TypeBuilder myType =
            myModule.DefineType("Sample", TypeAttributes.Public);

        Console.WriteLine("Type 'Sample' is generic: {0}",
            myType.IsGenericType);

        // Define type parameters for the type. Until you do this,
        // the type is not generic, as the preceding and following
        // WriteLine statements show. The type parameter names are
        // specified as an array of strings. To make the code
        // easier to read, each GenericTypeParameterBuilder is placed
        // in a variable with the same name as the type parameter.
        //
        string[] typeParamNames = {"TFirst", "TSecond"};
        GenericTypeParameterBuilder[] typeParams =
            myType.DefineGenericParameters(typeParamNames);

        GenericTypeParameterBuilder TFirst = typeParams[0];
        GenericTypeParameterBuilder TSecond = typeParams[1];

        Console.WriteLine("Type 'Sample' is generic: {0}",
            myType.IsGenericType);

        // Apply constraints to the type parameters.
        //
        // A type that is substituted for the first parameter, TFirst,
        // must be a reference type and must have a parameterless
        // constructor.
        TFirst.SetGenericParameterAttributes(
            GenericParameterAttributes.DefaultConstructorConstraint |
            GenericParameterAttributes.ReferenceTypeConstraint);

        // A type that is substituted for the second type
        // parameter must implement IExampleA and IExampleB, and
        // inherit from the trivial test class ExampleBase. The
        // interface constraints are specified as an array
        // containing the interface types.
        TSecond.SetBaseTypeConstraint(baseType);
        Type[] interfaceTypes = {interfaceA, interfaceB};
        TSecond.SetInterfaceConstraints(interfaceTypes);

        // The following code adds a private field named ExampleField,
        // of type TFirst.
        FieldBuilder exField =
            myType.DefineField("ExampleField", TFirst,
                FieldAttributes.Private);

        // Define a static method that takes an array of TFirst and
        // returns a List<TFirst> containing all the elements of
        // the array. To define this method it is necessary to create
        // the type List<TFirst> by calling MakeGenericType on the
        // generic type definition, List<T>. (The T is omitted with
        // the typeof operator when you get the generic type
        // definition.) The parameter type is created by using the
        // MakeArrayType method.
        //
        Type listOf = typeof(List<>);
        Type listOfTFirst = listOf.MakeGenericType(TFirst);
        Type[] mParamTypes = {TFirst.MakeArrayType()};

        MethodBuilder exMethod =
            myType.DefineMethod("ExampleMethod",
                MethodAttributes.Public | MethodAttributes.Static,
                listOfTFirst,
                mParamTypes);

        // Emit the method body.
        // The method body consists of just three opcodes, to load
        // the input array onto the execution stack, to call the
        // List<TFirst> constructor that takes IEnumerable<TFirst>,
        // which does all the work of putting the input elements into
        // the list, and to return, leaving the list on the stack. The
        // hard work is getting the constructor.
        //
        // The GetConstructor method is not supported on a
        // GenericTypeParameterBuilder, so it is not possible to get
        // the constructor of List<TFirst> directly. There are two
        // steps, first getting the constructor of List<T> and then
        // calling a method that converts it to the corresponding
        // constructor of List<TFirst>.
        //
        // The constructor needed here is the one that takes an
        // IEnumerable<T>. Note, however, that this is not the
        // generic type definition of IEnumerable<T>; instead, the
        // T from List<T> must be substituted for the T of
        // IEnumerable<T>. (This seems confusing only because both
        // types have type parameters named T. That is why this example
        // uses the somewhat silly names TFirst and TSecond.) To get
        // the type of the constructor argument, take the generic
        // type definition IEnumerable<T> (expressed as
        // IEnumerable<> when you use the typeof operator) and
        // call MakeGenericType with the first generic type parameter
        // of List<T>. The constructor argument list must be passed
        // as an array, with just one argument in this case.
        //
        // Now it is possible to get the constructor of List<T>,
        // using GetConstructor on the generic type definition. To get
        // the constructor of List<TFirst>, pass List<TFirst> and
        // the constructor from List<T> to the static
        // TypeBuilder.GetConstructor method.
        //
        ILGenerator ilgen = exMethod.GetILGenerator();

        Type ienumOf = typeof(IEnumerable<>);
        Type TfromListOf = listOf.GetGenericArguments()[0];
        Type ienumOfT = ienumOf.MakeGenericType(TfromListOf);
        Type[] ctorArgs = {ienumOfT};

        ConstructorInfo ctorPrep = listOf.GetConstructor(ctorArgs);
        ConstructorInfo ctor =
            TypeBuilder.GetConstructor(listOfTFirst, ctorPrep);

        ilgen.Emit(OpCodes.Ldarg_0);
        ilgen.Emit(OpCodes.Newobj, ctor);
        ilgen.Emit(OpCodes.Ret);

        // Create the type and save the assembly.
        Type finished = myType.CreateType();
        myAssembly.Save(myAsmName.Name+".dll");

        // Invoke the method.
        // ExampleMethod is not generic, but the type it belongs to is
        // generic, so in order to get a MethodInfo that can be invoked
        // it is necessary to create a constructed type. The Example
        // class satisfies the constraints on TFirst, because it is a
        // reference type and has a default constructor. In order to
        // have a class that satisfies the constraints on TSecond,
        // this code example defines the ExampleDerived type. These
        // two types are passed to MakeGenericMethod to create the
        // constructed type.
        //
        Type[] typeArgs = {typeof(Example), typeof(ExampleDerived)};
        Type constructed = finished.MakeGenericType(typeArgs);
        MethodInfo mi = constructed.GetMethod("ExampleMethod");

        // Create an array of Example objects, as input to the generic
        // method. This array must be passed as the only element of an
        // array of arguments. The first argument of Invoke is
        // null, because ExampleMethod is static. Display the count
        // on the resulting List<Example>.
        //
        Example[] input = {new Example(), new Example()};
        object[] arguments = {input};

        List<Example> listX =
            (List<Example>) mi.Invoke(null, arguments);

        Console.WriteLine(
            "\nThere are {0} elements in the List<Example>.",
            listX.Count);

        DisplayGenericParameters(finished);
    }

    private static void DisplayGenericParameters(Type t)
    {
        if (!t.IsGenericType)
        {
            Console.WriteLine("Type '{0}' is not generic.");
            return;
        }
        if (!t.IsGenericTypeDefinition)
        {
            t = t.GetGenericTypeDefinition();
        }

        Type[] typeParameters = t.GetGenericArguments();
        Console.WriteLine("\nListing {0} type parameters for type '{1}'.",
            typeParameters.Length, t);

        foreach( Type tParam in typeParameters )
        {
            Console.WriteLine("\r\nType parameter {0}:", tParam.ToString());

            foreach( Type c in tParam.GetGenericParameterConstraints() )
            {
                if (c.IsInterface)
                {
                    Console.WriteLine("    Interface constraint: {0}", c);
                }
                else
                {
                    Console.WriteLine("    Base type constraint: {0}", c);
                }
            }

            ListConstraintAttributes(tParam);
        }
    }

    // List the constraint flags. The GenericParameterAttributes
    // enumeration contains two sets of attributes, variance and
    // constraints. For this example, only constraints are used.
    //
    private static void ListConstraintAttributes(Type t)
    {
        // Mask off the constraint flags.
        GenericParameterAttributes constraints =
            t.GenericParameterAttributes & GenericParameterAttributes.SpecialConstraintMask;

        if ((constraints & GenericParameterAttributes.ReferenceTypeConstraint)
            != GenericParameterAttributes.None)
        {
            Console.WriteLine("    ReferenceTypeConstraint");
        }

        if ((constraints & GenericParameterAttributes.NotNullableValueTypeConstraint)
            != GenericParameterAttributes.None)
        {
            Console.WriteLine("    NotNullableValueTypeConstraint");
        }

        if ((constraints & GenericParameterAttributes.DefaultConstructorConstraint)
            !=GenericParameterAttributes.None)
        {
            Console.WriteLine("    DefaultConstructorConstraint");
        }
    }
}

/* This code example produces the following output:

Type 'Sample' is generic: False
Type 'Sample' is generic: True

There are 2 elements in the List<Example>.

Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.

Type parameter TFirst:
    ReferenceTypeConstraint
    DefaultConstructorConstraint

Type parameter TSecond:
    Interface constraint: IExampleA
    Interface constraint: IExampleB
    Base type constraint: ExampleBase
 */
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Collections.Generic

' Define a trivial base class and two trivial interfaces 
' to use when demonstrating constraints.
'
Public Class ExampleBase
End Class

Public Interface IExampleA
End Interface

Public Interface IExampleB
End Interface

' Define a trivial type that can substitute for type parameter 
' TSecond.
'
Public Class ExampleDerived
    Inherits ExampleBase
    Implements IExampleA, IExampleB
End Class

Public Class Example
    Public Shared Sub Main()
        ' Define a dynamic assembly to contain the sample type. The
        ' assembly will not be run, but only saved to disk, so
        ' AssemblyBuilderAccess.Save is specified.
        '
        Dim myDomain As AppDomain = AppDomain.CurrentDomain
        Dim myAsmName As New AssemblyName("GenericEmitExample1")
        Dim myAssembly As AssemblyBuilder = myDomain.DefineDynamicAssembly( _
            myAsmName, _
            AssemblyBuilderAccess.RunAndSave)

        ' An assembly is made up of executable modules. For a single-
        ' module assembly, the module name and file name are the same 
        ' as the assembly name. 
        '
        Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule( _
            myAsmName.Name, _
            myAsmName.Name & ".dll")

        ' Get type objects for the base class trivial interfaces to
        ' be used as constraints.
        '
        Dim baseType As Type = GetType(ExampleBase)
        Dim interfaceA As Type = GetType(IExampleA)
        Dim interfaceB As Type = GetType(IExampleB)
                
        ' Define the sample type.
        '
        Dim myType As TypeBuilder = myModule.DefineType( _
            "Sample", _
            TypeAttributes.Public)

        Console.WriteLine("Type 'Sample' is generic: {0}", _
            myType.IsGenericType)

        ' Define type parameters for the type. Until you do this, 
        ' the type is not generic, as the preceding and following 
        ' WriteLine statements show. The type parameter names are
        ' specified as an array of strings. To make the code
        ' easier to read, each GenericTypeParameterBuilder is placed
        ' in a variable with the same name as the type parameter.
        ' 
        Dim typeParamNames() As String = {"TFirst", "TSecond"}
        Dim typeParams() As GenericTypeParameterBuilder = _
            myType.DefineGenericParameters(typeParamNames)

        Dim TFirst As GenericTypeParameterBuilder = typeParams(0)
        Dim TSecond As GenericTypeParameterBuilder = typeParams(1)

        Console.WriteLine("Type 'Sample' is generic: {0}", _
            myType.IsGenericType)

        ' Apply constraints to the type parameters.
        '
        ' A type that is substituted for the first parameter, TFirst,
        ' must be a reference type and must have a parameterless
        ' constructor.
        TFirst.SetGenericParameterAttributes( _
            GenericParameterAttributes.DefaultConstructorConstraint _
            Or GenericParameterAttributes.ReferenceTypeConstraint)

        ' A type that is substituted for the second type
        ' parameter must implement IExampleA and IExampleB, and
        ' inherit from the trivial test class ExampleBase. The
        ' interface constraints are specified as an array 
        ' containing the interface types.
        TSecond.SetBaseTypeConstraint(baseType)
        Dim interfaceTypes() As Type = {interfaceA, interfaceB}
        TSecond.SetInterfaceConstraints(interfaceTypes)

        ' The following code adds a private field named ExampleField,
        ' of type TFirst.
        Dim exField As FieldBuilder = _
            myType.DefineField("ExampleField", TFirst, _
                FieldAttributes.Private)

        ' Define a Shared method that takes an array of TFirst and 
        ' returns a List(Of TFirst) containing all the elements of 
        ' the array. To define this method it is necessary to create
        ' the type List(Of TFirst) by calling MakeGenericType on the
        ' generic type definition, List(Of T). (The T is omitted with
        ' the GetType operator when you get the generic type 
        ' definition.) The parameter type is created by using the
        ' MakeArrayType method. 
        '
        Dim listOf As Type = GetType(List(Of ))
        Dim listOfTFirst As Type = listOf.MakeGenericType(TFirst)
        Dim mParamTypes() As Type = { TFirst.MakeArrayType() }

        Dim exMethod As MethodBuilder = _
            myType.DefineMethod("ExampleMethod", _
                MethodAttributes.Public Or MethodAttributes.Static, _
                listOfTFirst, _
                mParamTypes)

        ' Emit the method body. 
        ' The method body consists of just three opcodes, to load 
        ' the input array onto the execution stack, to call the 
        ' List(Of TFirst) constructor that takes IEnumerable(Of TFirst),
        ' which does all the work of putting the input elements into
        ' the list, and to return, leaving the list on the stack. The
        ' hard work is getting the constructor.
        ' 
        ' The GetConstructor method is not supported on a 
        ' GenericTypeParameterBuilder, so it is not possible to get 
        ' the constructor of List(Of TFirst) directly. There are two
        ' steps, first getting the constructor of List(Of T) and then
        ' calling a method that converts it to the corresponding 
        ' constructor of List(Of TFirst).
        '
        ' The constructor needed here is the one that takes an
        ' IEnumerable(Of T). Note, however, that this is not the 
        ' generic type definition of IEnumerable(Of T); instead, the
        ' T from List(Of T) must be substituted for the T of 
        ' IEnumerable(Of T). (This seems confusing only because both
        ' types have type parameters named T. That is why this example
        ' uses the somewhat silly names TFirst and TSecond.) To get
        ' the type of the constructor argument, take the generic
        ' type definition IEnumerable(Of T) (expressed as 
        ' IEnumerable(Of ) when you use the GetType operator) and 
        ' call MakeGenericType with the first generic type parameter
        ' of List(Of T). The constructor argument list must be passed
        ' as an array, with just one argument in this case.
        ' 
        ' Now it is possible to get the constructor of List(Of T),
        ' using GetConstructor on the generic type definition. To get
        ' the constructor of List(Of TFirst), pass List(Of TFirst) and
        ' the constructor from List(Of T) to the static
        ' TypeBuilder.GetConstructor method.
        '
        Dim ilgen As ILGenerator = exMethod.GetILGenerator()
        
        Dim ienumOf As Type = GetType(IEnumerable(Of ))
        Dim listOfTParams() As Type = listOf.GetGenericArguments()
        Dim TfromListOf As Type = listOfTParams(0)
        Dim ienumOfT As Type = ienumOf.MakeGenericType(TfromListOf)
        Dim ctorArgs() As Type = { ienumOfT }

        Dim ctorPrep As ConstructorInfo = _
            listOf.GetConstructor(ctorArgs)
        Dim ctor As ConstructorInfo = _
            TypeBuilder.GetConstructor(listOfTFirst, ctorPrep)

        ilgen.Emit(OpCodes.Ldarg_0)
        ilgen.Emit(OpCodes.Newobj, ctor)
        ilgen.Emit(OpCodes.Ret)

        ' Create the type and save the assembly. 
        Dim finished As Type = myType.CreateType()
        myAssembly.Save(myAsmName.Name & ".dll")

        ' Invoke the method.
        ' ExampleMethod is not generic, but the type it belongs to is
        ' generic, so in order to get a MethodInfo that can be invoked
        ' it is necessary to create a constructed type. The Example 
        ' class satisfies the constraints on TFirst, because it is a 
        ' reference type and has a default constructor. In order to
        ' have a class that satisfies the constraints on TSecond, 
        ' this code example defines the ExampleDerived type. These
        ' two types are passed to MakeGenericMethod to create the
        ' constructed type.
        '
        Dim typeArgs() As Type = _
            { GetType(Example), GetType(ExampleDerived) }
        Dim constructed As Type = finished.MakeGenericType(typeArgs)
        Dim mi As MethodInfo = constructed.GetMethod("ExampleMethod")

        ' Create an array of Example objects, as input to the generic
        ' method. This array must be passed as the only element of an 
        ' array of arguments. The first argument of Invoke is 
        ' Nothing, because ExampleMethod is Shared. Display the count
        ' on the resulting List(Of Example).
        ' 
        Dim input() As Example = { New Example(), New Example() }
        Dim arguments() As Object = { input }

        Dim listX As List(Of Example) = mi.Invoke(Nothing, arguments)

        Console.WriteLine(vbLf & _
            "There are {0} elements in the List(Of Example).", _
            listX.Count _ 
        )

        DisplayGenericParameters(finished)
    End Sub

    Private Shared Sub DisplayGenericParameters(ByVal t As Type)

        If Not t.IsGenericType Then
            Console.WriteLine("Type '{0}' is not generic.")
            Return
        End If
        If Not t.IsGenericTypeDefinition Then _
            t = t.GetGenericTypeDefinition()

        Dim typeParameters() As Type = t.GetGenericArguments()
        Console.WriteLine(vbCrLf & _
            "Listing {0} type parameters for type '{1}'.", _
            typeParameters.Length, t)

        For Each tParam As Type In typeParameters

            Console.WriteLine(vbCrLf & "Type parameter {0}:", _
                tParam.ToString())

            For Each c As Type In tParam.GetGenericParameterConstraints()
                If c.IsInterface Then
                    Console.WriteLine("    Interface constraint: {0}", c)
                Else
                    Console.WriteLine("    Base type constraint: {0}", c)
                End If
            Next 

            ListConstraintAttributes(tParam)
        Next tParam
    End Sub

    ' List the constraint flags. The GenericParameterAttributes
    ' enumeration contains two sets of attributes, variance and
    ' constraints. For this example, only constraints are used.
    '
    Private Shared Sub ListConstraintAttributes(ByVal t As Type)

        ' Mask off the constraint flags. 
        Dim constraints As GenericParameterAttributes = _
            t.GenericParameterAttributes And _
            GenericParameterAttributes.SpecialConstraintMask

        If (constraints And GenericParameterAttributes.ReferenceTypeConstraint) _
                <> GenericParameterAttributes.None Then _
            Console.WriteLine("    ReferenceTypeConstraint")

        If (constraints And GenericParameterAttributes.NotNullableValueTypeConstraint) _
                <> GenericParameterAttributes.None Then _
            Console.WriteLine("    NotNullableValueTypeConstraint")

        If (constraints And GenericParameterAttributes.DefaultConstructorConstraint) _
                <> GenericParameterAttributes.None Then _
            Console.WriteLine("    DefaultConstructorConstraint")

    End Sub 

End Class

' This code example produces the following output:
'
'Type 'Sample' is generic: False
'Type 'Sample' is generic: True
'
'There are 2 elements in the List(Of Example).
'
'Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.
'
'Type parameter TFirst:
'    ReferenceTypeConstraint
'    DefaultConstructorConstraint
'
'Type parameter TSecond:
'    Interface constraint: IExampleA
'    Interface constraint: IExampleB
'    Base type constraint: ExampleBase

Comentarios

Puede obtener una matriz de GenericTypeParameterBuilder objetos mediante el TypeBuilder.DefineGenericParameters método para agregar parámetros de tipo a un tipo dinámico, lo que lo convierte en un tipo genérico o mediante el MethodBuilder.DefineGenericParameters método para agregar parámetros de tipo a un método dinámico. Use los GenericTypeParameterBuilder objetos para agregar restricciones a los parámetros de tipo. Las restricciones son de tres tipos:

  • La restricción de tipo base especifica que cualquier tipo asignado al parámetro de tipo genérico debe derivar de un tipo base determinado. Establezca esta restricción mediante el SetBaseTypeConstraint método .

  • Una restricción de interfaz especifica que cualquier tipo asignado al parámetro de tipo genérico debe implementar una interfaz determinada. Establezca las restricciones de interfaz mediante el SetInterfaceConstraints método .

  • Las restricciones especiales especifican que cualquier tipo asignado al parámetro de tipo genérico debe tener un constructor sin parámetros, debe ser un tipo de referencia o debe ser un tipo de valor. Establezca las restricciones especiales para un parámetro de tipo mediante el SetGenericParameterAttributes método .

Las restricciones de interfaz y las restricciones especiales no se pueden recuperar mediante métodos de la GenericTypeParameterBuilder clase . Una vez creado el tipo genérico que contiene los parámetros de tipo, puede usar su Type objeto para reflejar las restricciones. Use el Type.GetGenericArguments método para obtener los parámetros de tipo y, para cada parámetro de tipo, use el Type.GetGenericParameterConstraints método para obtener la restricción de tipo base y las restricciones de interfaz, y la Type.GenericParameterAttributes propiedad para obtener las restricciones especiales.

Constructores

GenericTypeParameterBuilder()

Inicializa una nueva instancia de la clase GenericTypeParameterBuilder.

Propiedades

Assembly

Obtiene un objeto Assembly que representa el ensamblado dinámico que contiene la definición del tipo genérico al que pertenece el parámetro del tipo actual.

AssemblyQualifiedName

Obtiene null en todos los casos.

Attributes

Obtiene los atributos asociados al objeto Type.

Attributes

Obtiene los atributos asociados al objeto Type.

(Heredado de Type)
Attributes

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
BaseType

Obtiene la restricción de tipo base del parámetro de tipo genérico actual.

ContainsGenericParameters

Obtiene true en todos los casos.

CustomAttributes

Obtiene una colección que contiene los atributos personalizados de este miembro.

(Heredado de MemberInfo)
DeclaredConstructors

Obtiene una colección de los constructores declarados por el tipo actual.

(Heredado de TypeInfo)
DeclaredEvents

Obtiene una colección de los eventos definidos por el tipo actual.

(Heredado de TypeInfo)
DeclaredFields

Obtiene una colección de los campos definidos por el tipo actual.

(Heredado de TypeInfo)
DeclaredMembers

Obtiene una colección de los miembros definidos por el tipo actual.

(Heredado de TypeInfo)
DeclaredMethods

Obtiene una colección de los métodos definidos por el tipo actual.

(Heredado de TypeInfo)
DeclaredNestedTypes

Obtiene una colección de los tipos anidados definidos por el tipo actual.

(Heredado de TypeInfo)
DeclaredProperties

Obtiene una colección de las propiedades definidas por el tipo actual.

(Heredado de TypeInfo)
DeclaringMethod

Obtiene un objeto MethodInfo que representa el método declarativo si el objeto GenericTypeParameterBuilder actual representa un parámetro de tipo de un método genérico.

DeclaringType

Obtiene la definición de tipo genérico o la definición de método genérico a la que pertenece el parámetro de tipo genérico.

FullName

Obtiene null en todos los casos.

GenericParameterAttributes

Obtiene una combinación de marcas GenericParameterAttributes que describen la covarianza y las restricciones especiales del parámetro de tipo genérico actual.

GenericParameterAttributes

Obtiene una combinación de marcas GenericParameterAttributes que describen la covarianza y las restricciones especiales del parámetro de tipo genérico actual.

(Heredado de Type)
GenericParameterPosition

Obtiene la posición del parámetro de tipo en la lista de parámetros de tipo del método o tipo genérico que declaró el parámetro.

GenericTypeArguments

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GenericTypeArguments

Obtiene una matriz de los argumentos de tipo genérico para este tipo.

(Heredado de Type)
GenericTypeArguments

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GenericTypeParameters

Obtiene una matriz de los parámetros de tipo genérico de la instancia actual.

(Heredado de TypeInfo)
GUID

No compatible para los parámetros de tipo genérico incompletos.

HasElementType

Obtiene un valor que indica si el objeto Type actual engloba o hace referencia a otro tipo; es decir, si el objeto Type actual es una matriz o un puntero, o si se pasa por referencia.

(Heredado de Type)
HasElementType

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
ImplementedInterfaces

Obtiene una colección de las interfaces implementadas por el tipo actual.

(Heredado de TypeInfo)
IsAbstract

Obtiene un valor que indica si Type es abstracto y se debe invalidar.

(Heredado de Type)
IsAbstract

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsAnsiClass

Obtiene un valor que indica si se selecciona el atributo de formato de cadena AnsiClass para el objeto Type.

(Heredado de Type)
IsAnsiClass

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsArray

Obtiene un valor que indica si el tipo es una matriz.

(Heredado de Type)
IsArray

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsAutoClass

Obtiene un valor que indica si se selecciona el atributo de formato de cadena AutoClass para el objeto Type.

(Heredado de Type)
IsAutoClass

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsAutoLayout

Obtiene un valor que indica si los campos de tipo de la actual se disponen automáticamente mediante Common Language Runtime.

(Heredado de Type)
IsAutoLayout

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsByRef

Obtiene un valor que indica si Type se pasa por referencia.

(Heredado de Type)
IsByRef

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsByRefLike

Obtiene un valor que indica si el tipo es una estructura de tipo ByRef.

IsByRefLike

Obtiene un valor que indica si el tipo es una estructura de tipo ByRef.

(Heredado de Type)
IsClass

Obtiene un valor que indica si Type es una clase o un delegado, es decir, no es un tipo de valor ni una interfaz.

(Heredado de Type)
IsClass

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsCollectible

Obtiene un valor que indica si este objeto MemberInfo forma parte de un ensamblado contenido en un AssemblyLoadContext recopilable.

(Heredado de MemberInfo)
IsCOMObject

Obtiene un valor que indica si Type es un objeto COM.

(Heredado de Type)
IsCOMObject

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsConstructedGenericType

Obtiene un valor que indica si este objeto representa un tipo genérico construido.

IsConstructedGenericType

Obtiene un valor que indica si este objeto representa un tipo genérico construido. Puede crear instancias de un tipo genérico construido.

(Heredado de Type)
IsContextful

Obtiene un valor que indica si Type puede estar hospedado en un contexto.

(Heredado de Type)
IsEnum

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

IsEnum

Obtiene un valor que indica si el objeto Type actual representa una enumeración.

(Heredado de Type)
IsEnum

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsExplicitLayout

Obtiene un valor que indica si los campos del tipo actual se disponen en los desplazamientos especificados explícitamente.

(Heredado de Type)
IsExplicitLayout

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsFunctionPointer

Obtiene un valor que indica si el objeto actual Type es un puntero de función.

(Heredado de Type)
IsGenericMethodParameter

Obtiene un valor que indica si el objeto Type actual representa un parámetro de tipo en la definición de un método genérico.

(Heredado de Type)
IsGenericParameter

Obtiene true en todos los casos.

IsGenericType

Devuelve false en todos los casos

IsGenericTypeDefinition

Obtiene false en todos los casos.

IsGenericTypeParameter

Obtiene un valor que indica si el objeto Type actual representa un parámetro de tipo en la definición de un tipo genérico.

(Heredado de Type)
IsImport

Obtiene un valor que indica si el objeto Type tiene aplicado un atributo ComImportAttribute, lo que indica que se ha importado de una biblioteca de tipos COM.

(Heredado de Type)
IsImport

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsInterface

Obtiene un valor que indica si Type es una interfaz, es decir, no es una clase ni un tipo de valor.

(Heredado de Type)
IsInterface

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsLayoutSequential

Obtiene un valor que indica si los campos del tipo actual se disponen secuencialmente, en el orden que se definieron o emitieron en los metadatos.

(Heredado de Type)
IsLayoutSequential

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsMarshalByRef

Obtiene un valor que indica si Type se calcula por referencia.

(Heredado de Type)
IsMarshalByRef

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNested

Obtiene un valor que indica si el objeto Type actual representa un tipo cuya definición está anidada dentro de la definición de otro tipo.

(Heredado de Type)
IsNested

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedAssembly

Obtiene un valor que indica si Type está anidado y solo se ve dentro de su propio ensamblado.

(Heredado de Type)
IsNestedAssembly

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedFamANDAssem

Obtiene un valor que indica si Type está anidado y solo está visible para las clases que pertenezcan tanto a su propia familia como a su propio ensamblado.

(Heredado de Type)
IsNestedFamANDAssem

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedFamily

Obtiene un valor que indica si Type está anidado y solo se ve dentro de su propia familia.

(Heredado de Type)
IsNestedFamily

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedFamORAssem

Obtiene un valor que indica si Type está anidado y solo está visible para las clases que pertenezcan a su propia familia o a su propio ensamblado.

(Heredado de Type)
IsNestedFamORAssem

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedPrivate

Obtiene un valor que indica si Type está anidado y se ha declarado privado.

(Heredado de Type)
IsNestedPrivate

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNestedPublic

Obtiene un valor que indica si hay una clase anidada que se ha declarado pública.

(Heredado de Type)
IsNestedPublic

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsNotPublic

Obtiene un valor que indica si el objeto Type no se ha declarado público.

(Heredado de Type)
IsNotPublic

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsPointer

Obtiene un valor que indica si el objeto Type es un puntero.

(Heredado de Type)
IsPointer

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsPrimitive

Obtiene un valor que indica si el objeto Type es uno de los tipos primitivos.

(Heredado de Type)
IsPrimitive

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsPublic

Obtiene un valor que indica si el objeto Type se ha declarado público.

(Heredado de Type)
IsPublic

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsSealed

Obtiene un valor que indica si el objeto Type se declaró "sealed".

(Heredado de Type)
IsSealed

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsSecurityCritical

Obtiene un valor que indica si el tipo actual es crítico para la seguridad o crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual y, por tanto, puede realizar operaciones críticas.

(Heredado de Type)
IsSecuritySafeCritical

Obtiene un valor que indica si el tipo actual es crítico para la seguridad y disponible desde código transparente en el nivel de confianza actual; es decir, si puede realizar operaciones críticas y está disponible desde código transparente.

(Heredado de Type)
IsSecurityTransparent

Obtiene un valor que indica si el tipo actual es transparente en el nivel de confianza actual y, por tanto, no puede realizar operaciones críticas.

(Heredado de Type)
IsSerializable

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

IsSerializable
Obsoletos.

Obtiene un valor que indica si es Type serializable binario.

(Heredado de Type)
IsSerializable

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsSignatureType

Obtiene un valor que indica si el tipo es una tipo de firma.

(Heredado de Type)
IsSpecialName

Obtiene un valor que indica si el tipo tiene un nombre que requiere un tratamiento especial.

(Heredado de Type)
IsSpecialName

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsSZArray

Obtiene un valor que indica si el tipo es un tipo de matriz que puede representar solo una matriz unidimensional con un límite inferior de cero.

IsSZArray

Obtiene un valor que indica si el tipo es un tipo de matriz que puede representar solo una matriz unidimensional con un límite inferior de cero.

(Heredado de Type)
IsTypeDefinition

Obtiene un valor que indica si el tipo es una definición de tipo.

IsTypeDefinition

Obtiene un valor que indica si el tipo es una definición de tipo.

(Heredado de Type)
IsUnicodeClass

Obtiene un valor que indica si se selecciona el atributo de formato de cadena UnicodeClass para el objeto Type.

(Heredado de Type)
IsUnicodeClass

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsUnmanagedFunctionPointer

Obtiene un valor que indica si el objeto actual Type es un puntero de función no administrado.

(Heredado de Type)
IsValueType

Obtiene un valor que indica si el objeto Type es un tipo de valor.

(Heredado de Type)
IsValueType

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsVariableBoundArray

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

IsVariableBoundArray

Obtiene un valor que indica si el tipo es un tipo de matriz que puede representar una matriz multidimensional o una matriz con un límite inferior arbitrario.

(Heredado de Type)
IsVisible

Obtiene un valor que indica si se puede obtener acceso al objeto Type mediante el código fuera del ensamblado.

(Heredado de Type)
IsVisible

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
MemberType

Obtiene un valor de MemberTypes que indica que este miembro es un tipo o un tipo anidado.

(Heredado de Type)
MemberType

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
MetadataToken

Obtiene un token que identifica el módulo dinámico actual en los metadatos.

MetadataToken

Obtiene un valor que identifica un elemento de metadatos.

(Heredado de MemberInfo)
Module

Obtiene el módulo dinámico que contiene el parámetro de tipo genérico.

Name

Obtiene el nombre del parámetro de tipo genérico.

Namespace

Obtiene null en todos los casos.

ReflectedType

Obtiene el objeto Type usado para obtener GenericTypeParameterBuilder.

ReflectedType

Obtiene el objeto de la clase utilizado para obtener esta instancia de MemberInfo.

(Heredado de MemberInfo)
StructLayoutAttribute

Obtiene una clase StructLayoutAttribute que describe el diseño del tipo actual.

(Heredado de Type)
StructLayoutAttribute

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
TypeHandle

No compatible para los parámetros de tipo genérico incompletos.

TypeInitializer

Obtiene el inicializador para el tipo.

(Heredado de Type)
TypeInitializer

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
UnderlyingSystemType

Obtiene el parámetro de tipo genérico actual.

UnderlyingSystemType

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)

Métodos

AsType()

Devuelve el tipo actual como un objeto Type.

(Heredado de TypeInfo)
Equals(Object)

Comprueba si el objeto dado es una instancia de EventToken y es igual a la instancia actual.

Equals(Type)

Determina si el tipo de sistema subyacente del objeto Type actual es igual que el tipo de sistema subyacente del objeto Type especificado.

(Heredado de Type)
FindInterfaces(TypeFilter, Object)

Devuelve una matriz de objetos Type que representa una lista filtrada de interfaces implementadas o heredadas por el objeto Type actual.

(Heredado de Type)
FindInterfaces(TypeFilter, Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

Devuelve una matriz filtrada de objetos MemberInfo del tipo del miembro especificado.

(Heredado de Type)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetArrayRank()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetArrayRank()

Obtiene el número de dimensiones de una matriz.

(Heredado de Type)
GetArrayRank()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetAttributeFlagsImpl()

Cuando se invalida en una clase derivada, implementa la propiedad Attributes y obtiene una combinación bit a bit de valores de enumeración que indican los atributos asociados a Type.

GetAttributeFlagsImpl()

Cuando se invalida en una clase derivada, implementa la propiedad Attributes y obtiene una combinación bit a bit de valores de enumeración que indican los atributos asociados a Type.

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

Busca un constructor cuyos parámetros coincidan con los modificadores y tipos de argumento especificados, mediante las restricciones de enlace indicadas y la convención de llamadas también especificada.

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

Busca un constructor cuyos parámetros coincidan con los tipos y modificadores de argumento especificados, mediante las restricciones de enlace también especificadas.

(Heredado de Type)
GetConstructor(BindingFlags, Type[])

Busca un constructor cuyos parámetros coincidan con los tipos de argumento especificados mediante las restricciones de enlace especificadas.

(Heredado de Type)
GetConstructor(Type[])

Busca un constructor de instancia público cuyos parámetros coincidan con los tipos de la matriz especificada.

(Heredado de Type)
GetConstructor(Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

No compatible para los parámetros de tipo genérico incompletos.

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

Cuando se invalida en una clase derivada, busca un constructor cuyos parámetros coincidan con los tipos y modificadores de argumento especificados, y aplica las restricciones de enlace especificadas y la convención de llamadas especificada.

(Heredado de Type)
GetConstructors()

Devuelve todos los constructores públicos definidos para el objeto Type actual.

(Heredado de Type)
GetConstructors()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetConstructors(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetConstructors(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetCustomAttributes(Boolean)

No compatible para los parámetros de tipo genérico incompletos.

GetCustomAttributes(Boolean)

Cuando se reemplaza en una clase derivada, devuelve una matriz de todos los atributos personalizados aplicados a este miembro.

(Heredado de MemberInfo)
GetCustomAttributes(Type, Boolean)

No compatible para los parámetros de tipo genérico incompletos.

GetCustomAttributes(Type, Boolean)

Cuando se invalida en una clase derivada, devuelve una matriz de atributos personalizados aplicados a este miembro e identificado por Type.

(Heredado de MemberInfo)
GetCustomAttributesData()

Devuelve una lista de objetos CustomAttributeData que representan datos sobre los atributos que se aplicaron al miembro de destino.

(Heredado de MemberInfo)
GetDeclaredEvent(String)

Devuelve un objeto que representa el evento especificado declarado por el tipo actual.

(Heredado de TypeInfo)
GetDeclaredField(String)

Devuelve un objeto que representa el campo especificado declarado por el tipo actual.

(Heredado de TypeInfo)
GetDeclaredMethod(String)

Devuelve un objeto que representa el método especificado declarado por el tipo actual.

(Heredado de TypeInfo)
GetDeclaredMethods(String)

Devuelve una colección que contiene todos los métodos declarados en el tipo actual que coinciden con el nombre especificado.

(Heredado de TypeInfo)
GetDeclaredNestedType(String)

Devuelve un objeto que representa el tipo anidado especificado declarado por el tipo actual.

(Heredado de TypeInfo)
GetDeclaredProperty(String)

Devuelve un objeto que representa la propiedad especificada declarada por el tipo actual.

(Heredado de TypeInfo)
GetDefaultMembers()

Busca los miembros definidos para el objeto Type actual cuya clase DefaultMemberAttribute esté establecida.

(Heredado de Type)
GetDefaultMembers()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetElementType()

Devuelve NotSupportedException en todos los casos

GetEnumName(Object)

Devuelve el nombre de la constante que tiene el valor especificado para el tipo de enumeración actual.

(Heredado de Type)
GetEnumName(Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEnumNames()

Devuelve los nombres de los miembros del tipo de enumeración actual.

(Heredado de Type)
GetEnumNames()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEnumUnderlyingType()

Devuelve el tipo subyacente del tipo de enumeración actual.

(Heredado de Type)
GetEnumUnderlyingType()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEnumValues()

Devuelve una matriz con los valores de las constantes en el tipo de enumeración actual.

(Heredado de Type)
GetEnumValues()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEnumValuesAsUnderlyingType()

Recupera una matriz de los valores de las constantes de tipo subyacentes de este tipo de enumeración.

(Heredado de Type)
GetEvent(String)

Devuelve el objeto EventInfo que representa el evento público especificado.

(Heredado de Type)
GetEvent(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEvent(String, BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetEvent(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEvents()

No compatible para los parámetros de tipo genérico incompletos.

GetEvents()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetEvents(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetEvents(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetField(String)

Busca el campo público con el nombre especificado.

(Heredado de Type)
GetField(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetField(String, BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetField(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetFields()

Devuelve todos los campos públicos del objeto Type actual.

(Heredado de Type)
GetFields()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetFields(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetFields(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetFunctionPointerCallingConventions()

Cuando se invalida en una clase derivada, devuelve las convenciones de llamada del puntero Typede función actual.

(Heredado de Type)
GetFunctionPointerParameterTypes()

Cuando se reemplaza en una clase derivada, devuelve los tipos de parámetro del puntero Typede función actual .

(Heredado de Type)
GetFunctionPointerReturnType()

Cuando se reemplaza en una clase derivada, devuelve el tipo de valor devuelto del puntero Typede función actual .

(Heredado de Type)
GetGenericArguments()

No válido para los parámetros de tipo genérico.

GetGenericArguments()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetGenericParameterConstraints()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetGenericParameterConstraints()

Devuelve una matriz de objetos Type que representan las restricciones en el parámetro de tipo genérico actual.

(Heredado de Type)
GetGenericParameterConstraints()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetGenericTypeDefinition()

No válido para los parámetros de tipo genérico.

GetHashCode()

Devuelve un código hash entero de 32 bits de la instancia actual.

GetInterface(String)

Busca la interfaz con el nombre especificado.

(Heredado de Type)
GetInterface(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetInterface(String, Boolean)

No compatible para los parámetros de tipo genérico incompletos.

GetInterface(String, Boolean)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetInterfaceMap(Type)

No compatible para los parámetros de tipo genérico incompletos.

GetInterfaces()

No compatible para los parámetros de tipo genérico incompletos.

GetInterfaces()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMember(String)

Busca los miembros públicos con el nombre especificado.

(Heredado de Type)
GetMember(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMember(String, BindingFlags)

Busca los miembros especificados mediante las restricciones de enlace especificadas.

(Heredado de Type)
GetMember(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMember(String, MemberTypes, BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetMember(String, MemberTypes, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMembers()

Devuelve todos los miembros públicos del objeto Type actual.

(Heredado de Type)
GetMembers()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMembers(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetMembers(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMemberWithSameMetadataDefinitionAs(MemberInfo)

Busca en el MemberInfo objeto actual Type que coincide con el especificado MemberInfo.

(Heredado de Type)
GetMethod(String)

Busca el método público con el nombre especificado.

(Heredado de Type)
GetMethod(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMethod(String, BindingFlags)

Busca el método especificado mediante las restricciones de enlace especificadas.

(Heredado de Type)
GetMethod(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Busca el método especificado cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados, usando las restricciones de enlace indicadas y la convención de llamada especificada.

(Heredado de Type)
GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

Busca el método especificado cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados, mediante las restricciones de enlace indicadas.

(Heredado de Type)
GetMethod(String, BindingFlags, Type[])

Busca el método especificado cuyos parámetros coinciden con los tipos de argumento especificados, utilizando las restricciones de enlace especificadas.

(Heredado de Type)
GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Busca el método especificado cuyos parámetros coincidan con el número de parámetros genéricos, los tipos de argumento y los modificadores especificados, mediante las restricciones de enlace y la convención de llamada especificadas.

(Heredado de Type)
GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[])

Busca el método especificado cuyos parámetros coincidan con el número de parámetros genéricos, los tipos de argumento y los modificadores especificados, mediante las restricciones de enlace especificadas.

(Heredado de Type)
GetMethod(String, Int32, BindingFlags, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de Type)
GetMethod(String, Int32, Type[])

Busca el método público especificado cuyos parámetros coincidan con el número de parámetros genéricos y los tipos de argumento especificados.

(Heredado de Type)
GetMethod(String, Int32, Type[], ParameterModifier[])

Busca el método público especificado cuyos parámetros coincidan con el número de parámetros genéricos, los tipos de argumento y los modificadores especificados.

(Heredado de Type)
GetMethod(String, Type[])

Busca el método público especificado cuyos parámetros coincidan con los tipos de argumentos especificados.

(Heredado de Type)
GetMethod(String, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMethod(String, Type[], ParameterModifier[])

Busca el método público especificado cuyos parámetros coincidan con los tipos y modificadores de argumento especificados.

(Heredado de Type)
GetMethod(String, Type[], ParameterModifier[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

No compatible para los parámetros de tipo genérico incompletos.

GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Cuando se invalida en una clase derivada, busca el método especificado cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados y aplica las restricciones de enlace especificadas y la convención de llamada especificada.

(Heredado de Type)
GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Cuando se invalida en una clase derivada, busca el método especificado cuyos parámetros coincidan con el número de parámetros genéricos, tipos de argumento y modificadores especificados, mediante las restricciones de enlace y la convención de llamada especificadas.

(Heredado de Type)
GetMethods()

Devuelve todos los métodos públicos del objeto Type actual.

(Heredado de Type)
GetMethods()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetMethods(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetMethods(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetNestedType(String)

Busca el tipo anidado público con el nombre especificado.

(Heredado de Type)
GetNestedType(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetNestedType(String, BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetNestedType(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetNestedTypes()

Devuelve los tipos públicos anidados en el objeto Type actual.

(Heredado de Type)
GetNestedTypes()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetNestedTypes(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetNestedTypes(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetOptionalCustomModifiers()

Cuando se reemplaza en una clase derivada, devuelve los modificadores personalizados opcionales del objeto actual Type.

(Heredado de Type)
GetProperties()

Devuelve todas las propiedades públicas del objeto Type actual.

(Heredado de Type)
GetProperties()

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperties(BindingFlags)

No compatible para los parámetros de tipo genérico incompletos.

GetProperties(BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String)

Busca la propiedad pública con el nombre especificado.

(Heredado de Type)
GetProperty(String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String, BindingFlags)

Busca la propiedad especificada, mediante las restricciones de enlace especificadas.

(Heredado de Type)
GetProperty(String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Busca la propiedad especificada cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados, mediante las restricciones de enlace indicadas.

(Heredado de Type)
GetProperty(String, Type)

Busca la propiedad pública con el nombre especificado y el tipo de valor devuelto.

(Heredado de Type)
GetProperty(String, Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String, Type, Type[])

Busca la propiedad pública especificada cuyos parámetros coincidan con los tipos de argumentos especificados.

(Heredado de Type)
GetProperty(String, Type, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String, Type, Type[], ParameterModifier[])

Busca la propiedad pública especificada cuyos parámetros coincidan con los tipos y modificadores de los argumentos especificados.

(Heredado de Type)
GetProperty(String, Type, Type[], ParameterModifier[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetProperty(String, Type[])

Busca la propiedad pública especificada cuyos parámetros coincidan con los tipos de argumentos especificados.

(Heredado de Type)
GetProperty(String, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

No compatible para los parámetros de tipo genérico incompletos.

GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Cuando se invalida en una clase derivada, busca la propiedad especificada cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados, usando las restricciones de enlace especificadas.

(Heredado de Type)
GetRequiredCustomModifiers()

Cuando se reemplaza en una clase derivada, devuelve los modificadores personalizados necesarios del objeto actual Type.

(Heredado de Type)
GetType()

Obtiene la estructura Type actual.

(Heredado de Type)
GetType()

Detecta los atributos de un miembro y proporciona acceso a sus metadatos.

(Heredado de MemberInfo)
GetTypeCodeImpl()

Devuelve el código de tipo subyacente de esta instancia de Type.

(Heredado de Type)
HasElementTypeImpl()

Cuando se invalida en una clase derivada, implementa la propiedad HasElementType y determina si el objeto Type actual engloba a otro tipo o hace referencia a él; es decir, si el objeto Type actual es una matriz o un puntero, o se pasa por referencia.

HasElementTypeImpl()

Cuando se invalida en una clase derivada, implementa la propiedad HasElementType y determina si el objeto Type actual engloba a otro tipo o hace referencia a él; es decir, si el objeto Type actual es una matriz o un puntero, o se pasa por referencia.

(Heredado de Type)
HasSameMetadataDefinitionAs(MemberInfo)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de MemberInfo)
InvokeMember(String, BindingFlags, Binder, Object, Object[])

Invoca al miembro especificado, aplica las restricciones de enlace igualmente especificadas y compara la lista de argumentos indicada.

(Heredado de Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

Invoca al miembro especificado, aplica las restricciones de enlace especificadas y compara la lista de argumentos y la referencia cultural igualmente especificadas.

(Heredado de Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

No compatible para los parámetros de tipo genérico incompletos.

IsArrayImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsArray y determina si Type es una matriz.

IsArrayImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsArray y determina si Type es una matriz.

(Heredado de Type)
IsAssignableFrom(Type)

Se produce una excepción NotSupportedException en todos los casos.

IsAssignableFrom(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsAssignableFrom(TypeInfo)

Se produce una excepción NotSupportedException en todos los casos.

IsAssignableTo(Type)

Determina si el tipo actual se puede asignar a una variable del targetType especificado.

(Heredado de Type)
IsByRefImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsByRef y determina si Type se pasa por referencia.

IsByRefImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsByRef y determina si Type se pasa por referencia.

(Heredado de Type)
IsCOMObjectImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsCOMObject y determina si Type es un objeto COM.

IsCOMObjectImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsCOMObject y determina si Type es un objeto COM.

(Heredado de Type)
IsContextfulImpl()

Implementa la propiedad IsContextful y determina si la clase Type puede hospedarse en un contexto.

(Heredado de Type)
IsDefined(Type, Boolean)

No compatible para los parámetros de tipo genérico incompletos.

IsDefined(Type, Boolean)

Cuando se reemplaza en una clase derivada, indica si se aplican a este miembro uno o más atributos del tipo especificado o de sus tipos derivados.

(Heredado de MemberInfo)
IsEnumDefined(Object)

Devuelve un valor que indica si el valor especificado existe en el tipo de enumeración actual.

(Heredado de Type)
IsEnumDefined(Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsEquivalentTo(Type)

Determina si dos tipos COM tienen la misma identidad y se pueden usar para la equivalencia de tipos.

(Heredado de Type)
IsEquivalentTo(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsInstanceOfType(Object)

Determina si el objeto especificado es una instancia del objeto Type actual.

(Heredado de Type)
IsInstanceOfType(Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

(Heredado de TypeInfo)
IsMarshalByRefImpl()

Implementa la propiedad IsMarshalByRef y determina si las referencias de Type se calculan por referencia.

(Heredado de Type)
IsPointerImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsPointer y determina si Type es un puntero.

IsPointerImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsPointer y determina si Type es un puntero.

(Heredado de Type)
IsPrimitiveImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsPrimitive y determina si Type es uno de los tipos primitivos.

IsPrimitiveImpl()

Cuando se invalida en una clase derivada, implementa la propiedad IsPrimitive y determina si Type es uno de los tipos primitivos.

(Heredado de Type)
IsSubclassOf(Type)

No compatible para los parámetros de tipo genérico incompletos.

IsValueTypeImpl()

Implementa la propiedad IsValueType y determina si Type es un tipo de valor; es decir, no es una clase ni una interfaz.

IsValueTypeImpl()

Implementa la propiedad IsValueType y determina si Type es un tipo de valor; es decir, no es una clase ni una interfaz.

(Heredado de Type)
MakeArrayType()

Devuelve el tipo de una matriz unidimensional cuyo tipo de elemento es el parámetro de tipo genérico.

MakeArrayType(Int32)

Devuelve el tipo de una matriz cuyo tipo de elemento es el parámetro de tipo genérico, con el número especificado de dimensiones.

MakeByRefType()

Devuelve un objeto Type que representa el parámetro de tipo genérico actual cuando se pasa como un parámetro de referencia.

MakeGenericType(Type[])

No válido para los parámetros de tipo genérico incompletos.

MakePointerType()

Devuelve un objeto Type que representa un puntero al parámetro de tipo genérico actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
SetBaseTypeConstraint(Type)

Establece el tipo de base que debe heredar un tipo con el fin de ser sustituido para el parámetro de tipo.

SetBaseTypeConstraintCore(Type)

Cuando se invalida en una clase derivada, establece el tipo base que un tipo debe heredar para sustituirlo por el parámetro de tipo.

SetCustomAttribute(ConstructorInfo, Byte[])

Establece un atributo personalizado mediante un blob de atributo personalizado especificado.

SetCustomAttribute(CustomAttributeBuilder)

Establece un atributo personalizado mediante un generador de atributos personalizado.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Cuando se invalida en una clase derivada, establece un atributo personalizado en este ensamblado.

SetGenericParameterAttributes(GenericParameterAttributes)

Establece las características de varianza y las restricciones especiales del parámetro genérico, como la restricción de constructor sin parámetros.

SetGenericParameterAttributesCore(GenericParameterAttributes)

Cuando se invalida en una clase derivada, establece las características de varianza y las restricciones especiales del parámetro genérico, como la restricción de constructor sin parámetros.

SetInterfaceConstraints(Type[])

Establece las interfaces que debe implementar un tipo para que se sustituya por el parámetro de tipo.

SetInterfaceConstraintsCore(Type[])

Cuando se invalida en una clase derivada, establece las interfaces que un tipo debe implementar para sustituirse por el parámetro de tipo.

ToString()

Devuelve una representación de cadena del parámetro de tipo genérico actual.

Implementaciones de interfaz explícitas

_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de MemberInfo)
_MemberInfo.GetType()

Objeto Type que representa la clase MemberInfo.

(Heredado de MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

(Heredado de MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de MemberInfo)
_Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Type)
_Type.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

(Heredado de Type)
_Type.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Type)
_Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Type)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Devuelve una matriz de todos los atributos personalizados definidos en este miembro, excluidos los atributos con nombre, o una matriz vacía si no hay atributos personalizados.

(Heredado de MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Devuelve una matriz de atributos personalizados definidos en este miembro, identificados por tipo, o una matriz vacía si no hay atributos personalizados de ese tipo.

(Heredado de MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Indica si una o más instancias de attributeType se definen en este miembro.

(Heredado de MemberInfo)
IReflectableType.GetTypeInfo()

Devuelve una representación del tipo actual en forma de objeto TypeInfo.

(Heredado de TypeInfo)

Métodos de extensión

GetCustomAttribute(MemberInfo, Type)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto.

GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttribute<T>(MemberInfo)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera un atributo personalizado de un tipo especificado que se aplica a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes(MemberInfo)

Recupera una colección de atributos personalizados que se aplican a un miembro especificado.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una colección de atributos personalizados que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes(MemberInfo, Type)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

GetCustomAttributes<T>(MemberInfo)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto.

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera una colección de atributos personalizados de un tipo especificado que se aplican a un miembro concreto y, opcionalmente, inspecciona los antecesores de dicho miembro.

IsDefined(MemberInfo, Type)

Indica si se deben aplicar atributos personalizados de un tipo especificado a un miembro especificado.

IsDefined(MemberInfo, Type, Boolean)

Indica si los atributos personalizados de un tipo especificado se aplican a un miembro especificado y, opcionalmente, se aplican a sus antecesores.

GetTypeInfo(Type)

Devuelve la representación de TypeInfo del tipo especificado.

GetMetadataToken(MemberInfo)

Obtiene un token de metadatos del miembro determinado, si está disponible.

HasMetadataToken(MemberInfo)

Devuelve un valor que indica si un token de metadatos está disponible para el miembro especificado.

GetRuntimeEvent(Type, String)

Recupera un objeto que representa el evento especificado.

GetRuntimeEvents(Type)

Recupera una colección que representa todos los eventos definidos en un tipo especificado.

GetRuntimeField(Type, String)

Recupera un objeto que representa un campo especificado.

GetRuntimeFields(Type)

Recupera una colección que representa todos los campos definidos en un tipo especificado.

GetRuntimeInterfaceMap(TypeInfo, Type)

Devuelve una asignación de interfaz para el tipo de interfaz y la interfaz especificada.

GetRuntimeMethod(Type, String, Type[])

Recupera un objeto que representa un método especificado.

GetRuntimeMethods(Type)

Recupera una colección que representa todos los métodos definidos en un tipo especificado.

GetRuntimeProperties(Type)

Recupera una colección que representa todas las propiedades definidas en un tipo especificado.

GetRuntimeProperty(Type, String)

Recupera un objeto que representa una propiedad especificada.

GetConstructor(Type, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetConstructors(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetConstructors(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetDefaultMembers(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetEvent(Type, String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetEvent(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetEvents(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetEvents(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetField(Type, String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetField(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetFields(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetFields(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetGenericArguments(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetInterfaces(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMember(Type, String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMember(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMembers(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMembers(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMethod(Type, String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMethod(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMethod(Type, String, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMethods(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetMethods(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetNestedType(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetNestedTypes(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperties(Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperties(Type, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperty(Type, String)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperty(Type, String, BindingFlags)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperty(Type, String, Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

GetProperty(Type, String, Type, Type[])

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

IsAssignableFrom(Type, Type)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

IsInstanceOfType(Type, Object)

Define y crea parámetros de tipo genérico para definidos métodos y tipos genéricos definidos dinámicamente. Esta clase no puede heredarse.

Se aplica a

Consulte también