GenericTypeParameterBuilder Класс

Определение

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов.Defines and creates generic type parameters for dynamically defined generic types and methods. Этот класс не наследуется.This class cannot be inherited.

public ref class GenericTypeParameterBuilder sealed : System::Reflection::TypeInfo
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
type GenericTypeParameterBuilder = class
    inherit TypeInfo
Public NotInheritable Class GenericTypeParameterBuilder
Inherits TypeInfo
Наследование
GenericTypeParameterBuilder
Атрибуты

Примеры

В следующем примере кода создается универсальный тип с двумя параметрами типа, который сохраняется в сборке GenericEmitExample1. dll.The following code example creates a generic type with two type parameters, and saves them in the assembly GenericEmitExample1.dll. Для просмотра созданных типов можно использовать программу Ildasm. exe (ДИЗАССЕМБЛЕР IL) .You can use the Ildasm.exe (IL Disassembler) to view the generated types. Более подробное описание действий, связанных с определением динамического универсального типа, см. в разделе как определить универсальный тип с помощью порождаемого отражения.For a more detailed explanation of the steps involved in defining a dynamic generic type, see 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

Комментарии

Массив GenericTypeParameterBuilder объектов можно получить с помощью метода TypeBuilder.DefineGenericParameters, чтобы добавить параметры типа в динамический тип, сделав его универсальным типом или используя метод MethodBuilder.DefineGenericParameters для добавления параметров типа в динамический метод.You can get an array of GenericTypeParameterBuilder objects by using the TypeBuilder.DefineGenericParameters method to add type parameters to a dynamic type, thus making it a generic type, or by using the MethodBuilder.DefineGenericParameters method to add type parameters to a dynamic method. Используйте GenericTypeParameterBuilder объекты, чтобы добавить ограничения в параметры типа.Use the GenericTypeParameterBuilder objects to add constraints to the type parameters. Ограничения имеют три вида:Constraints are of three kinds:

  • Ограничение базового типа указывает, что любой тип, назначенный параметру универсального типа, должен быть производным от определенного базового типа.The base type constraint specifies that any type assigned to the generic type parameter must derive from a particular base type. Задайте это ограничение с помощью метода SetBaseTypeConstraint.Set this constraint by using the SetBaseTypeConstraint method.

  • Ограничение интерфейса указывает, что любой тип, назначенный параметру универсального типа, должен реализовывать определенный интерфейс.An interface constraint specifies that any type assigned to the generic type parameter must implement a particular interface. Задайте ограничения интерфейса с помощью метода SetInterfaceConstraints.Set the interface constraints by using the SetInterfaceConstraints method.

  • Особые ограничения указывают, что любой тип, назначенный параметру универсального типа, должен иметь конструктор без параметров, должен быть ссылочным типом или должен быть типом значения.Special constraints specify that any type assigned to the generic type parameter must have a parameterless constructor, must be a reference type, or must be a value type. Задайте особые ограничения для параметра типа с помощью метода SetGenericParameterAttributes.Set the special constraints for a type parameter by using the SetGenericParameterAttributes method.

Ограничения интерфейса и специальные ограничения не могут быть получены с помощью методов класса GenericTypeParameterBuilder.Interface constraints and special constraints cannot be retrieved using methods of the GenericTypeParameterBuilder class. После создания универсального типа, содержащего параметры типа, можно использовать его Typeный объект, чтобы отразить ограничения.Once you have created the generic type that contains the type parameters, you can use its Type object to reflect the constraints. Используйте метод Type.GetGenericArguments для получения параметров типа, а для каждого параметра типа используйте метод Type.GetGenericParameterConstraints для получения ограничений базового типа и интерфейса, а также свойство Type.GenericParameterAttributes для получения специальных ограничений.Use the Type.GetGenericArguments method to get the type parameters, and for each type parameter use the Type.GetGenericParameterConstraints method to get the base type constraint and interface constraints, and the Type.GenericParameterAttributes property to get the special constraints.

Свойства

Assembly

Возвращает объект Assembly, представляющий динамическую сборку, содержащую определение универсального типа, которой принадлежит текущий параметр типа.Gets an Assembly object representing the dynamic assembly that contains the generic type definition the current type parameter belongs to.

AssemblyQualifiedName

Получает значение null во всех случаях.Gets null in all cases.

Attributes
BaseType

Возвращает ограничение базового типа для текущего параметра универсального типа.Gets the base type constraint of the current generic type parameter.

ContainsGenericParameters

Получает значение true во всех случаях.Gets true in all cases.

CustomAttributes

Получает коллекцию, содержащую пользовательские атрибуты этого члена.Gets a collection that contains this member's custom attributes.

(Унаследовано от MemberInfo)
DeclaredConstructors

Получает коллекцию конструкторов, объявленных текущим типом.Gets a collection of the constructors declared by the current type.

(Унаследовано от TypeInfo)
DeclaredEvents

Получает коллекцию событий, определенных текущим типом.Gets a collection of the events defined by the current type.

(Унаследовано от TypeInfo)
DeclaredFields

Получает коллекцию полей, определенных текущим типом.Gets a collection of the fields defined by the current type.

(Унаследовано от TypeInfo)
DeclaredMembers

Получает коллекцию членов, определенных текущим типом.Gets a collection of the members defined by the current type.

(Унаследовано от TypeInfo)
DeclaredMethods

Получает коллекцию методов, определенных текущим типом.Gets a collection of the methods defined by the current type.

(Унаследовано от TypeInfo)
DeclaredNestedTypes

Получает коллекцию вложенных типов, определенных текущим типом.Gets a collection of the nested types defined by the current type.

(Унаследовано от TypeInfo)
DeclaredProperties

Возвращает коллекцию свойств, определенных текущим типом.Gets a collection of the properties defined by the current type.

(Унаследовано от TypeInfo)
DeclaringMethod

Возвращает метод MethodInfo, который представляет объявляемый метод, если текущий GenericTypeParameterBuilder представляет параметр типа универсального метода.Gets a MethodInfo that represents the declaring method, if the current GenericTypeParameterBuilder represents a type parameter of a generic method.

DeclaringType

Возвращает определение универсального типа или определение универсального метода, которому принадлежит параметр универсального типа.Gets the generic type definition or generic method definition to which the generic type parameter belongs.

FullName

Получает значение null во всех случаях.Gets null in all cases.

GenericParameterAttributes

Возвращает сочетание флагов GenericParameterAttributes, описывающих ковариацию и особые ограничения текущего параметра универсального типа.Gets a combination of GenericParameterAttributes flags that describe the covariance and special constraints of the current generic type parameter.

GenericParameterPosition

Возвращает позицию параметра типа в списке параметров типа универсального типа или метода, который объявил этот параметр.Gets the position of the type parameter in the type parameter list of the generic type or method that declared the parameter.

GenericTypeArguments
GenericTypeParameters

Возвращает массив параметров универсального типа для текущего экземпляра.Gets an array of the generic type parameters of the current instance.

(Унаследовано от TypeInfo)
GUID

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

HasElementType

Возвращает значение, позволяющее определить, содержит ли текущий объект Type в себе другой тип или ссылку на другой тип (иными словами, является ли текущий объект Type массивом, указателем либо параметром или же он передается по ссылке).Gets a value indicating whether the current Type encompasses or refers to another type; that is, whether the current Type is an array, a pointer, or is passed by reference.

(Унаследовано от Type)
ImplementedInterfaces

Возвращает коллекцию интерфейсов, реализованных текущим типом.Gets a collection of the interfaces implemented by the current type.

(Унаследовано от TypeInfo)
IsAbstract

Возвращает значение, показывающее, является ли данный объект Type абстрактным объектом, который должен быть переопределен.Gets a value indicating whether the Type is abstract and must be overridden.

(Унаследовано от Type)
IsAnsiClass

Возвращает значение, позволяющее определить, выбран ли для объекта AnsiClass атрибут формата строки Type.Gets a value indicating whether the string format attribute AnsiClass is selected for the Type.

(Унаследовано от Type)
IsArray

Возвращает значение, показывающее, является ли тип массивом.Gets a value that indicates whether the type is an array.

(Унаследовано от Type)
IsAutoClass

Возвращает значение, позволяющее определить, выбран ли для объекта AutoClass атрибут формата строки Type.Gets a value indicating whether the string format attribute AutoClass is selected for the Type.

(Унаследовано от Type)
IsAutoLayout

Получает значение, указывающее, выкладываются ли поля текущего типа автоматически средой CLR.Gets a value indicating whether the fields of the current type are laid out automatically by the common language runtime.

(Унаследовано от Type)
IsByRef

Возвращает значение, указывающее, передан ли объект Type по ссылке.Gets a value indicating whether the Type is passed by reference.

(Унаследовано от Type)
IsByRefLike
IsClass

Получает значение, позволяющее определить, является объект Type классом или делегатом (иными словами, не является типом значения или интерфейсом).Gets a value indicating whether the Type is a class or a delegate; that is, not a value type or interface.

(Унаследовано от Type)
IsCollectible

Получает значение, указывающее, является ли объект MemberInfo частью сборки, содержащейся в забираемом контексте AssemblyLoadContext.Gets a value that indicates whether this MemberInfo object is part of an assembly held in a collectible AssemblyLoadContext.

(Унаследовано от MemberInfo)
IsCOMObject

Возвращает значение, указывающее, является ли объект Type COM-объектом.Gets a value indicating whether the Type is a COM object.

(Унаследовано от Type)
IsConstructedGenericType

Возвращает значение, указывающее, представляет ли этот данный объект сконструированный универсальный тип.Gets a value that indicates whether this object represents a constructed generic type.

IsContextful

Возвращает значение, позволяющее определить, можно ли поместить в контекст объект Type.Gets a value indicating whether the Type can be hosted in a context.

(Унаследовано от Type)
IsEnum
IsExplicitLayout

Возвращает значение, указывающее, выкладываются ли поля текущего типа с явно заданными смещениями.Gets a value indicating whether the fields of the current type are laid out at explicitly specified offsets.

(Унаследовано от Type)
IsGenericMethodParameter

Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального метода.Gets a value that indicates whether the current Type represents a type parameter in the definition of a generic method.

(Унаследовано от Type)
IsGenericParameter

Получает значение true во всех случаях.Gets true in all cases.

IsGenericType

Возвращает значение false во всех случаях.Returns false in all cases.

IsGenericTypeDefinition

Получает значение false во всех случаях.Gets false in all cases.

IsGenericTypeParameter

Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального типа.Gets a value that indicates whether the current Type represents a type parameter in the definition of a generic type.

(Унаследовано от Type)
IsImport

Возвращает значение, позволяющее определить, есть ли у объекта Type атрибут ComImportAttribute, свидетельствующий о том, что объект был импортирован из библиотеки COM-типов.Gets a value indicating whether the Type has a ComImportAttribute attribute applied, indicating that it was imported from a COM type library.

(Унаследовано от Type)
IsInterface

Возвращает значение, позволяющее определить, является ли объект Type интерфейсом (иными словами, не является классом или типом значения).Gets a value indicating whether the Type is an interface; that is, not a class or a value type.

(Унаследовано от Type)
IsLayoutSequential

Возвращает значение, указывающее, выкладываются ли поля текущего типа последовательно, в том порядке, в котором они были определены, или выдаются в метаданные.Gets a value indicating whether the fields of the current type are laid out sequentially, in the order that they were defined or emitted to the metadata.

(Унаследовано от Type)
IsMarshalByRef

Возвращает значение, указывающее, маршалирован ли объект Type по ссылке.Gets a value indicating whether the Type is marshaled by reference.

(Унаследовано от Type)
IsNested

Возвращает значение, позволяющее определить, представляет ли текущий объект Type тип, определение которого вложено в определение другого типа.Gets a value indicating whether the current Type object represents a type whose definition is nested inside the definition of another type.

(Унаследовано от Type)
IsNestedAssembly

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своей сборке.Gets a value indicating whether the Type is nested and visible only within its own assembly.

(Унаследовано от Type)
IsNestedFamANDAssem

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только для классов, принадлежащих одновременно к семейству и сборке этого объекта.Gets a value indicating whether the Type is nested and visible only to classes that belong to both its own family and its own assembly.

(Унаследовано от Type)
IsNestedFamily

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своем семействе.Gets a value indicating whether the Type is nested and visible only within its own family.

(Унаследовано от Type)
IsNestedFamORAssem

Возвращает значение, позволяющее определить, является ли данный объект Type вложенным и видимым только для классов, принадлежащих либо к его семейству, либо к его сборке.Gets a value indicating whether the Type is nested and visible only to classes that belong to either its own family or to its own assembly.

(Унаследовано от Type)
IsNestedPrivate

Возвращает значение, позволяющее определить, является ли объект Type вложенным и объявленным как закрытый.Gets a value indicating whether the Type is nested and declared private.

(Унаследовано от Type)
IsNestedPublic

Возвращает значение, позволяющее определить, является ли класс вложенным и объявленным как открытый.Gets a value indicating whether a class is nested and declared public.

(Унаследовано от Type)
IsNotPublic

Возвращает значение, позволяющее определить, не был ли объект Type объявлен как открытый.Gets a value indicating whether the Type is not declared public.

(Унаследовано от Type)
IsPointer

Возвращает значение, указывающее, является ли объект Type указателем.Gets a value indicating whether the Type is a pointer.

(Унаследовано от Type)
IsPrimitive

Возвращает значение, указывающее, является ли Type одним из типов-примитивов.Gets a value indicating whether the Type is one of the primitive types.

(Унаследовано от Type)
IsPublic

Возвращает значение, позволяющее определить, был ли объект Type объявлен как открытый.Gets a value indicating whether the Type is declared public.

(Унаследовано от Type)
IsSealed

Возвращает значение, позволяющее определить, был ли объект Type объявлен как запечатанный.Gets a value indicating whether the Type is declared sealed.

(Унаследовано от Type)
IsSecurityCritical

Возвращает значение, которое указывает, является ли текущий тип критически важным для безопасности или защищенным критически важным для безопасности на данном уровне доверия и, следовательно, может ли он выполнять критические операции.Gets a value that indicates whether the current type is security-critical or security-safe-critical at the current trust level, and therefore can perform critical operations.

(Унаследовано от Type)
IsSecuritySafeCritical

Возвращает значение, которое указывает, является ли текущий тип защищенным критически важным для безопасности на текущем уровне доверия и, следовательно, может ли он выполнять критические операции и предоставлять доступ прозрачному коду.Gets a value that indicates whether the current type is security-safe-critical at the current trust level; that is, whether it can perform critical operations and can be accessed by transparent code.

(Унаследовано от Type)
IsSecurityTransparent

Получает значение, которое указывает, является ли текущий тип прозрачным на текущем уровне доверия и, следовательно, не может выполнять критические операции.Gets a value that indicates whether the current type is transparent at the current trust level, and therefore cannot perform critical operations.

(Унаследовано от Type)
IsSerializable
IsSignatureType

Возвращает значение, показывающее, является ли тип типом сигнатуры.Gets a value that indicates whether the type is a signature type.

(Унаследовано от Type)
IsSpecialName

Возвращает значение, позволяющее определить, требует ли имя данного объекта специальной обработки.Gets a value indicating whether the type has a name that requires special handling.

(Унаследовано от Type)
IsSZArray
IsTypeDefinition
IsUnicodeClass

Возвращает значение, позволяющее определить, выбран ли для объекта UnicodeClass атрибут формата строки Type.Gets a value indicating whether the string format attribute UnicodeClass is selected for the Type.

(Унаследовано от Type)
IsValueType

Возвращает значение, позволяющее определить, является ли объект Type типом значения.Gets a value indicating whether the Type is a value type.

(Унаследовано от Type)
IsVariableBoundArray
IsVisible

Возвращает значение, позволяющее определить, можно ли получить доступ к объекту Type из кода за пределами сборки.Gets a value indicating whether the Type can be accessed by code outside the assembly.

(Унаследовано от Type)
MemberType

Возвращает значение MemberTypes, позволяющее определить, каким типом является этот член: обычным или вложенным.Gets a MemberTypes value indicating that this member is a type or a nested type.

(Унаследовано от Type)
MetadataToken

Получает значение, определяющее элемент метаданных.Gets a value that identifies a metadata element.

(Унаследовано от MemberInfo)
Module

Возвращает динамический модуль, содержащий параметр универсального типа.Gets the dynamic module that contains the generic type parameter.

Name

Возвращает имя универсального параметра типа.Gets the name of the generic type parameter.

Namespace

Получает значение null во всех случаях.Gets null in all cases.

ReflectedType

Получает объект Type, который использовался для получения GenericTypeParameterBuilder.Gets the Type object that was used to obtain the GenericTypeParameterBuilder.

StructLayoutAttribute

Возвращает атрибут StructLayoutAttribute, описывающий структуру текущего типа.Gets a StructLayoutAttribute that describes the layout of the current type.

(Унаследовано от Type)
TypeHandle

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

TypeInitializer

Возвращает инициализатор типа.Gets the initializer for the type.

(Унаследовано от Type)
UnderlyingSystemType

Возвращает текущий параметр универсального типа.Gets the current generic type parameter.

Методы

AsType()

Возвращает текущий тип в виде объекта Type.Returns the current type as a Type object.

(Унаследовано от TypeInfo)
Equals(Object)

Проверяет, является ли указанный объект экземпляром EventToken и равен ли он текущему экземпляру.Tests whether the given object is an instance of EventToken and is equal to the current instance.

Equals(Type)

Позволяет определить, совпадает ли базовый системный тип текущего объекта Type с базовым системным типом указанного объекта Type.Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Type.

(Унаследовано от Type)
FindInterfaces(TypeFilter, Object)

Возвращает массив объектов Type, представляющий отфильтрованный список интерфейсов, реализованных или наследуемых текущим объектом Type.Returns an array of Type objects representing a filtered list of interfaces implemented or inherited by the current Type.

(Унаследовано от Type)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

Возвращает отфильтрованный массив объектов MemberInfo, тип которого совпадает с указанным типом члена.Returns a filtered array of MemberInfo objects of the specified member type.

(Унаследовано от Type)
GetArrayRank()
GetAttributeFlagsImpl()

При переопределении в производном классе реализует свойство Attributes и возвращает побитовое сочетание значений перечисления, указывающих атрибуты, связанные с Type.When overridden in a derived class, implements the Attributes property and gets a bitwise combination of enumeration values that indicate the attributes associated with the Type.

(Унаследовано от Type)
GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Выполняет поиск конструктора с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений по привязке и соглашений о вызовах.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

Выполняет поиск конструктора, параметры которого соответствуют указанным типам аргументов и модификаторам, используя заданные ограничения привязки.Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(Унаследовано от Type)
GetConstructor(Type[])

Выполняет поиск открытого конструктора экземпляра, параметры которого соответствуют типам, содержащимся в указанном массиве.Searches for a public instance constructor whose parameters match the types in the specified array.

(Унаследовано от Type)
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

При переопределении в производном классе ищет конструктор, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.When overridden in a derived class, searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetConstructors()

Возвращает все открытые конструкторы, определенные для текущего объекта Type.Returns all the public constructors defined for the current Type.

(Унаследовано от Type)
GetConstructors(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetCustomAttributes(Boolean)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetCustomAttributes(Type, Boolean)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetCustomAttributesData()

Возвращает список объектов CustomAttributeData, представляющих данные об атрибутах, которые были применены к целевому члену.Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member.

(Унаследовано от MemberInfo)
GetDeclaredEvent(String)

Возвращает объект, представляющий указанное открытое событие, объявленное текущим типом.Returns an object that represents the specified public event declared by the current type.

(Унаследовано от TypeInfo)
GetDeclaredField(String)

Возвращает объект, представляющий указанное открытое поле, объявленное текущим типом.Returns an object that represents the specified public field declared by the current type.

(Унаследовано от TypeInfo)
GetDeclaredMethod(String)

Возвращает объект, представляющий указанный открытый метод, объявленный текущим типом.Returns an object that represents the specified public method declared by the current type.

(Унаследовано от TypeInfo)
GetDeclaredMethods(String)

Возвращает коллекцию, содержащую все открытые методы, объявленные в текущем типе, которые соответствуют заданному имени.Returns a collection that contains all public methods declared on the current type that match the specified name.

(Унаследовано от TypeInfo)
GetDeclaredNestedType(String)

Возвращает объект, представляющий указанный открытый вложенный тип, объявленный текущим типом.Returns an object that represents the specified public nested type declared by the current type.

(Унаследовано от TypeInfo)
GetDeclaredProperty(String)

Возвращает объект, представляющий указанное открытое свойство, объявленное текущим типом.Returns an object that represents the specified public property declared by the current type.

(Унаследовано от TypeInfo)
GetDefaultMembers()

Выполняет поиск членов, определенных для текущего объекта Type, для которого задан атрибут DefaultMemberAttribute.Searches for the members defined for the current Type whose DefaultMemberAttribute is set.

(Унаследовано от Type)
GetElementType()

Во всех случаях вызывает исключение NotSupportedException.Throws a NotSupportedException in all cases.

GetEnumName(Object)

Возвращает имя константы с заданным значением для текущего типа перечисления.Returns the name of the constant that has the specified value, for the current enumeration type.

(Унаследовано от Type)
GetEnumNames()

Возвращает имена членов текущего типа перечисления.Returns the names of the members of the current enumeration type.

(Унаследовано от Type)
GetEnumUnderlyingType()

Возвращает базовый тип текущего типа перечисления.Returns the underlying type of the current enumeration type.

(Унаследовано от Type)
GetEnumValues()

Возвращает массив значений констант в текущем типе перечисления.Returns an array of the values of the constants in the current enumeration type.

(Унаследовано от Type)
GetEvent(String)

Возвращает объект EventInfo, представляющий указанное открытое событие.Returns the EventInfo object representing the specified public event.

(Унаследовано от Type)
GetEvent(String, BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetEvents()

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetEvents(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetField(String)

Выполняет поиск открытого поля с заданным именем.Searches for the public field with the specified name.

(Унаследовано от Type)
GetField(String, BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetFields()

Возвращает все открытые поля текущего объекта Type.Returns all the public fields of the current Type.

(Унаследовано от Type)
GetFields(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetGenericArguments()

Не допустимо для параметров универсального типа.Not valid for generic type parameters.

GetGenericParameterConstraints()
GetGenericTypeDefinition()

Не допустимо для параметров универсального типа.Not valid for generic type parameters.

GetHashCode()

Возвращает хэш-код в виде 32-разрядного целого числа для текущего экземпляра.Returns a 32-bit integer hash code for the current instance.

GetInterface(String)

Выполняет поиск интерфейса с заданным именем.Searches for the interface with the specified name.

(Унаследовано от Type)
GetInterface(String, Boolean)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetInterfaceMap(Type)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetInterfaces()

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetMember(String)

Выполняет поиск открытого члена с заданным именем.Searches for the public members with the specified name.

(Унаследовано от Type)
GetMember(String, BindingFlags)

Выполняет поиск указанных членов, используя заданные ограничения привязки.Searches for the specified members, using the specified binding constraints.

(Унаследовано от Type)
GetMember(String, MemberTypes, BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetMembers()

Возвращает все открытые члены текущего объекта Type.Returns all the public members of the current Type.

(Унаследовано от Type)
GetMembers(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetMethod(String)

Выполняет поиск открытого метода с заданным именем.Searches for the public method with the specified name.

(Унаследовано от Type)
GetMethod(String, BindingFlags)

Выполняет поиск указанного метода, используя заданные ограничения привязки.Searches for the specified method, using the specified binding constraints.

(Унаследовано от Type)
GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Ищет метод с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах.Searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

Ищет заданный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя установленные ограничения привязки.Searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(Унаследовано от Type)
GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Ищет метод с параметрами, соответствующими указанному числу универсальных параметров, модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах.Searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[])

Ищет заданный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя установленные ограничения привязки.Searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints.

(Унаследовано от Type)
GetMethod(String, Int32, Type[])

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров и типам аргументов.Searches for the specified public method whose parameters match the specified generic parameter count and argument types.

(Унаследовано от Type)
GetMethod(String, Int32, Type[], ParameterModifier[])

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам.Searches for the specified public method whose parameters match the specified generic parameter count, argument types and modifiers.

(Унаследовано от Type)
GetMethod(String, Type[])

Ищет указанный открытый метод, параметры которого соответствуют заданным типам аргументов.Searches for the specified public method whose parameters match the specified argument types.

(Унаследовано от Type)
GetMethod(String, Type[], ParameterModifier[])

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанным типам аргументов и модификаторам.Searches for the specified public method whose parameters match the specified argument types and modifiers.

(Унаследовано от Type)
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.When overridden in a derived class, searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.When overridden in a derived class, searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints and the specified calling convention.

(Унаследовано от Type)
GetMethods()

Возвращает все открытые методы текущего объекта Type.Returns all the public methods of the current Type.

(Унаследовано от Type)
GetMethods(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetNestedType(String)

Выполняет поиск открытого вложенного типа с заданным именем.Searches for the public nested type with the specified name.

(Унаследовано от Type)
GetNestedType(String, BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetNestedTypes()

Возвращает открытые типы, вложенные в текущий объект Type.Returns the public types nested in the current Type.

(Унаследовано от Type)
GetNestedTypes(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetProperties()

Возвращает все открытые свойства текущего объекта Type.Returns all the public properties of the current Type.

(Унаследовано от Type)
GetProperties(BindingFlags)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

GetProperty(String)

Выполняет поиск общедоступного свойства с указанным именем.Searches for the public property with the specified name.

(Унаследовано от Type)
GetProperty(String, BindingFlags)

Ищет указанное свойство, используя заданные ограничения привязки.Searches for the specified property, using the specified binding constraints.

(Унаследовано от Type)
GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Ищет свойство с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(Унаследовано от Type)
GetProperty(String, Type)

Выполняет поиск открытого свойства с заданным именем и типом возвращаемого значения.Searches for the public property with the specified name and return type.

(Унаследовано от Type)
GetProperty(String, Type, Type[])

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.Searches for the specified public property whose parameters match the specified argument types.

(Унаследовано от Type)
GetProperty(String, Type, Type[], ParameterModifier[])

Ищет заданное открытое свойство, параметры которого соответствуют указанным типам аргументов и модификаторам.Searches for the specified public property whose parameters match the specified argument types and modifiers.

(Унаследовано от Type)
GetProperty(String, Type[])

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.Searches for the specified public property whose parameters match the specified argument types.

(Унаследовано от Type)
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

При переопределении в производном классе выполняет поиск заданного свойства, параметры которого соответствуют типам и модификаторам заданных аргументов, с использованием заданных ограничений привязки.When overridden in a derived class, searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(Унаследовано от Type)
GetType()

Возвращает текущий Type.Gets the current Type.

(Унаследовано от Type)
GetTypeCodeImpl()

Возвращает код базового типа этого экземпляра Type.Returns the underlying type code of this Type instance.

(Унаследовано от Type)
HasElementTypeImpl()

При переопределении в производном классе реализует свойство HasElementType и определяет, что содержится в текущем объекте Type: непосредственно другой тип или же указывающая на него ссылка (иными словами, является ли текущий объект Type массивом, указателем или параметром или же он передается по ссылке).When overridden in a derived class, implements the HasElementType property and determines whether the current Type encompasses or refers to another type; that is, whether the current Type is an array, a pointer, or is passed by reference.

(Унаследовано от Type)
HasSameMetadataDefinitionAs(MemberInfo) (Унаследовано от MemberInfo)
InvokeMember(String, BindingFlags, Binder, Object, Object[])

Вызывает указанный член, соответствующий заданным ограничениям привязки и указанному списку аргументов.Invokes the specified member, using the specified binding constraints and matching the specified argument list.

(Унаследовано от Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

Вызывает указанный член, соответствующий заданным ограничениям привязки, списку аргументов, а также языку и региональным параметрам.Invokes the specified member, using the specified binding constraints and matching the specified argument list and culture.

(Унаследовано от Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

IsArrayImpl()

При переопределении в производном классе реализует свойство IsArray и определяет, является ли данный объект Type массивом.When overridden in a derived class, implements the IsArray property and determines whether the Type is an array.

(Унаследовано от Type)
IsAssignableFrom(Type)

Вызывает исключение NotSupportedException во всех случаях.Throws a NotSupportedException exception in all cases.

IsAssignableFrom(TypeInfo)

Вызывает исключение NotSupportedException во всех случаях.Throws a NotSupportedException exception in all cases.

IsByRefImpl()

При переопределении в производном классе реализует свойство IsByRef и определяет, передается ли данный объект Type по ссылке.When overridden in a derived class, implements the IsByRef property and determines whether the Type is passed by reference.

(Унаследовано от Type)
IsCOMObjectImpl()

При переопределении в производном классе реализует свойство IsCOMObject и определяет, является ли объект Type COM-объектом.When overridden in a derived class, implements the IsCOMObject property and determines whether the Type is a COM object.

(Унаследовано от Type)
IsContextfulImpl()

Реализует свойство IsContextful и определяет, можно ли поместить в контекст данный объект Type.Implements the IsContextful property and determines whether the Type can be hosted in a context.

(Унаследовано от Type)
IsDefined(Type, Boolean)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

IsEnumDefined(Object)

Возвращает значение, показывающее, имеется ли в текущем типе перечисления указанное значение.Returns a value that indicates whether the specified value exists in the current enumeration type.

(Унаследовано от Type)
IsEquivalentTo(Type)

Определяет, имеют ли два типа модели COM одинаковые удостоверения и могут ли они считаться эквивалентными.Determines whether two COM types have the same identity and are eligible for type equivalence.

(Унаследовано от Type)
IsInstanceOfType(Object)
IsMarshalByRefImpl()

Реализует свойство IsMarshalByRef и определяет, маршалируется ли объект Type по ссылке.Implements the IsMarshalByRef property and determines whether the Type is marshaled by reference.

(Унаследовано от Type)
IsPointerImpl()

При переопределении в производном классе реализует свойство IsPointer и определяет, является ли объект Type указателем.When overridden in a derived class, implements the IsPointer property and determines whether the Type is a pointer.

(Унаследовано от Type)
IsPrimitiveImpl()

При переопределении в производном классе реализует свойство IsPrimitive и определяет, является ли объект Type одним из типов-примитивов.When overridden in a derived class, implements the IsPrimitive property and determines whether the Type is one of the primitive types.

(Унаследовано от Type)
IsSubclassOf(Type)

Не поддерживается для неполных параметров универсального типа.Not supported for incomplete generic type parameters.

IsValueTypeImpl()

Реализует свойство IsValueType и определяет, является ли объект Type типом значения (иными словами, не является классом или интерфейсом).Implements the IsValueType property and determines whether the Type is a value type; that is, not a class or an interface.

(Унаследовано от Type)
MakeArrayType()

Возвращает тип одномерного массива, тип элементов которого является параметром универсального типа.Returns the type of a one-dimensional array whose element type is the generic type parameter.

MakeArrayType(Int32)

Возвращает тип массива, тип элементов которого является параметром универсального типа с указанным количеством измерений.Returns the type of an array whose element type is the generic type parameter, with the specified number of dimensions.

MakeByRefType()

Возвращает объект Type, который представляет текущий параметр универсального типа, когда выполняется передача в качестве параметра ссылки.Returns a Type object that represents the current generic type parameter when passed as a reference parameter.

MakeGenericType(Type[])

Недопустимо для неполных параметров универсального типа.Not valid for incomplete generic type parameters.

MakePointerType()

Возвращает объект Type, который представляет указатель на текущий параметр универсального типа.Returns a Type object that represents a pointer to the current generic type parameter.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
SetBaseTypeConstraint(Type)

Задает базовый тип, который должен наследоваться типом, для подстановки вместо параметра типа.Sets the base type that a type must inherit in order to be substituted for the type parameter.

SetCustomAttribute(ConstructorInfo, Byte[])

Задает настраиваемый атрибут с помощью большого двоичного объекта пользовательских атрибутов.Sets a custom attribute using a specified custom attribute blob.

SetCustomAttribute(CustomAttributeBuilder)

Задает настраиваемый атрибут с помощью построителя настраиваемых атрибутов.Set a custom attribute using a custom attribute builder.

SetGenericParameterAttributes(GenericParameterAttributes)

Задает характеристики расхождения и особые ограничения универсального параметра, например ограничение конструктора без параметров.Sets the variance characteristics and special constraints of the generic parameter, such as the parameterless constructor constraint.

SetInterfaceConstraints(Type[])

Задает интерфейсы, которые должны быть реализованы типом для использования вместо параметра типа.Sets the interfaces a type must implement in order to be substituted for the type parameter.

ToString()

Возвращает строковое представление текущего параметра универсального типа.Returns a string representation of the current generic type parameter.

Явные реализации интерфейса

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Унаследовано от MemberInfo)
_MemberInfo.GetType()

Возвращает объект Type, представляющий класс MemberInfo.Gets a Type object representing the MemberInfo class.

(Унаследовано от MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.Retrieves the type information for an object, which can then be used to get the type information for an interface.

(Унаследовано от MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Унаследовано от MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Унаследовано от MemberInfo)
_Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Унаследовано от Type)
_Type.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.Retrieves the type information for an object, which can then be used to get the type information for an interface.

(Унаследовано от Type)
_Type.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Унаследовано от Type)
_Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Унаследовано от Type)
ICustomAttributeProvider.GetCustomAttributes(Boolean) (Унаследовано от MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) (Унаследовано от MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean) (Унаследовано от MemberInfo)
IReflectableType.GetTypeInfo()

Возвращает представление текущего типа объекта TypeInfo.Returns a representation of the current type as a TypeInfo object.

(Унаследовано от TypeInfo)

Методы расширения

GetCustomAttribute(MemberInfo, Type)

Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу.Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute(MemberInfo, Type, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttribute<T>(MemberInfo)

Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу.Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute<T>(MemberInfo, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo)

Извлекает коллекцию настраиваемых атрибутов, примененных к указанному члену.Retrieves a collection of custom attributes that are applied to a specified member.

GetCustomAttributes(MemberInfo, Boolean)

Извлекает коллекцию пользовательских атрибутов, которые применяются к указанному элементу и, при необходимости, проверяет предков этого элемента.Retrieves a collection of custom attributes that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo, Type)

Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу.Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes(MemberInfo, Type, Boolean)

Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes<T>(MemberInfo)

Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу.Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes<T>(MemberInfo, Boolean)

Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

IsDefined(MemberInfo, Type)

Указывает, применены ли какие-либо пользовательские атрибуты заданного типа к указанному члену.Indicates whether custom attributes of a specified type are applied to a specified member.

IsDefined(MemberInfo, Type, Boolean)

Указывает применены ли настраиваемые атрибуты указанного типа к указанному элементу и, при необходимости, применены ли они к его предкам.Indicates whether custom attributes of a specified type are applied to a specified member, and, optionally, applied to its ancestors.

GetTypeInfo(Type)

Возвращает представление TypeInfo указанного типа.Returns the TypeInfo representation of the specified type.

GetMetadataToken(MemberInfo)

Возвращает маркер метаданных для заданного элемента, если он доступен.Gets a metadata token for the given member, if available.

HasMetadataToken(MemberInfo)

Возвращает значение, указывающее, доступен ли маркер метаданных для указанного элемента.Returns a value that indicates whether a metadata token is available for the specified member.

GetRuntimeEvent(Type, String)

Получает объект, представляющий указанное событие.Retrieves an object that represents the specified event.

GetRuntimeEvents(Type)

Извлекает коллекцию, представляющую все события, определенные в указанном типе.Retrieves a collection that represents all the events defined on a specified type.

GetRuntimeField(Type, String)

Извлекает объект , который представляет указанное поле.Retrieves an object that represents a specified field.

GetRuntimeFields(Type)

Извлекает коллекцию, представляющую все поля, определенные в указанном типе.Retrieves a collection that represents all the fields defined on a specified type.

GetRuntimeInterfaceMap(TypeInfo, Type)

Возвращает сопоставление интерфейса для заданного типа и указанного интерфейса.Returns an interface mapping for the specified type and the specified interface.

GetRuntimeMethod(Type, String, Type[])

Извлекает объект, который представляет указанный метод.Retrieves an object that represents a specified method.

GetRuntimeMethods(Type)

Извлекает коллекцию, представляющую все методы, определенные в указанном типе.Retrieves a collection that represents all methods defined on a specified type.

GetRuntimeProperties(Type)

Извлекает коллекцию, представляющую все свойства, определенные в указанном типе.Retrieves a collection that represents all the properties defined on a specified type.

GetRuntimeProperty(Type, String)

Извлекает объект, который представляет указанное свойство.Retrieves an object that represents a specified property.

GetConstructor(Type, Type[])
GetConstructors(Type)
GetConstructors(Type, BindingFlags)
GetDefaultMembers(Type)
GetEvent(Type, String)
GetEvent(Type, String, BindingFlags)
GetEvents(Type)
GetEvents(Type, BindingFlags)
GetField(Type, String)
GetField(Type, String, BindingFlags)
GetFields(Type)
GetFields(Type, BindingFlags)
GetGenericArguments(Type)
GetInterfaces(Type)
GetMember(Type, String)
GetMember(Type, String, BindingFlags)
GetMembers(Type)
GetMembers(Type, BindingFlags)
GetMethod(Type, String)
GetMethod(Type, String, BindingFlags)
GetMethod(Type, String, Type[])
GetMethods(Type)
GetMethods(Type, BindingFlags)
GetNestedType(Type, String, BindingFlags)
GetNestedTypes(Type, BindingFlags)
GetProperties(Type)
GetProperties(Type, BindingFlags)
GetProperty(Type, String)
GetProperty(Type, String, BindingFlags)
GetProperty(Type, String, Type)
GetProperty(Type, String, Type, Type[])
IsAssignableFrom(Type, Type)
IsInstanceOfType(Type, Object)

Применяется к

Дополнительно