GenericTypeParameterBuilder Класс

Определение

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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
Наследование
GenericTypeParameterBuilder
Наследование
GenericTypeParameterBuilder
Наследование
GenericTypeParameterBuilder
Атрибуты

Примеры

В следующем примере кода создается универсальный тип с двумя параметрами типа и сохраняется в GenericEmitExample1.dll сборки. Для просмотра созданных типов можно использовать Ildasm.exe (дизассемблировщик IL ). Более подробное описание действий, связанных с определением динамического универсального типа, см. в разделе Практическое руководство. Определение универсального типа с помощью отражения.

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 метода для добавления параметров типа в динамический метод. Используйте объекты для GenericTypeParameterBuilder добавления ограничений к параметрам типа. Ограничения бывают трех видов:

  • Ограничение базового типа указывает, что любой тип, назначенный параметру универсального типа, должен быть производным от определенного базового типа. Задайте это ограничение с помощью SetBaseTypeConstraint метода .

  • Ограничение интерфейса указывает, что любой тип, назначенный параметру универсального типа, должен реализовывать определенный интерфейс. Задайте ограничения интерфейса с помощью SetInterfaceConstraints метода .

  • Специальные ограничения указывают, что любой тип, назначенный параметру универсального типа, должен иметь конструктор без параметров, быть ссылочным типом или быть типом значения. Задайте специальные ограничения для параметра типа с помощью SetGenericParameterAttributes метода .

Ограничения интерфейса и специальные ограничения нельзя получить с помощью методов GenericTypeParameterBuilder класса . После создания универсального типа, содержащего параметры типа, можно использовать его Type объект для отражения ограничений. Type.GetGenericArguments Используйте метод , чтобы получить параметры типа, и для каждого параметра типа используйте Type.GetGenericParameterConstraints метод , чтобы получить ограничения базового типа и ограничения интерфейса, а Type.GenericParameterAttributes также свойство , чтобы получить специальные ограничения.

Конструкторы

GenericTypeParameterBuilder()

Инициализирует новый экземпляр класса GenericTypeParameterBuilder.

Свойства

Assembly

Возвращает объект Assembly, представляющий динамическую сборку, содержащую определение универсального типа, которой принадлежит текущий параметр типа.

AssemblyQualifiedName

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

Attributes

Возвращает атрибуты, связанные с объектом Type.

Attributes

Возвращает атрибуты, связанные с объектом Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает ограничение базового типа для текущего параметра универсального типа.

ContainsGenericParameters

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

CustomAttributes

Получает коллекцию, содержащую пользовательские атрибуты этого члена.

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

Получает коллекцию конструкторов, объявленных текущим типом.

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

Получает коллекцию событий, определенных текущим типом.

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

Получает коллекцию полей, определенных текущим типом.

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

Получает коллекцию членов, определенных текущим типом.

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

Получает коллекцию методов, определенных текущим типом.

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

Получает коллекцию вложенных типов, определенных текущим типом.

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

Возвращает коллекцию свойств, определенных текущим типом.

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

Возвращает метод MethodInfo, который представляет объявляемый метод, если текущий GenericTypeParameterBuilder представляет параметр типа универсального метода.

DeclaringType

Возвращает определение универсального типа или определение универсального метода, которому принадлежит параметр универсального типа.

FullName

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

GenericParameterAttributes

Возвращает сочетание флагов GenericParameterAttributes, описывающих ковариацию и особые ограничения текущего параметра универсального типа.

GenericParameterAttributes

Возвращает сочетание флагов GenericParameterAttributes, описывающих ковариацию и особые ограничения текущего параметра универсального типа.

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

Возвращает позицию параметра типа в списке параметров типа универсального типа или метода, который объявил этот параметр.

GenericTypeArguments

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GenericTypeArguments

Получает массив аргументов универсального типа для этого типа.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает массив параметров универсального типа для текущего экземпляра.

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

Не поддерживается для неполных параметров универсального типа.

HasElementType

Возвращает значение, позволяющее определить, содержит ли текущий объект Type в себе другой тип или ссылку на другой тип (иными словами, является ли текущий объект Type массивом, указателем либо параметром или же он передается по ссылке).

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает коллекцию интерфейсов, реализованных текущим типом.

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

Возвращает значение, показывающее, является ли данный объект Type абстрактным объектом, который должен быть переопределен.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, выбран ли для объекта AnsiClass атрибут формата строки Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, показывающее, является ли тип массивом.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, выбран ли для объекта AutoClass атрибут формата строки Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Получает значение, указывающее, выкладываются ли поля текущего типа автоматически средой CLR.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, передан ли объект Type по ссылке.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, показывающее, является ли тип структурой, подобной ByRef.

IsByRefLike

Возвращает значение, показывающее, является ли тип структурой, подобной ByRef.

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

Получает значение, позволяющее определить, является объект Type классом или делегатом (иными словами, не является типом значения или интерфейсом).

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Получает значение, указывающее, является ли объект MemberInfo частью сборки, содержащейся в забираемом контексте AssemblyLoadContext.

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

Возвращает значение, указывающее, является ли объект Type COM-объектом.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, представляет ли этот данный объект сконструированный универсальный тип.

IsConstructedGenericType

Возвращает значение, указывающее, представляет ли этот данный объект сконструированный универсальный тип. Можно создать экземпляры сконструированного универсального типа.

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

Возвращает значение, позволяющее определить, можно ли поместить в контекст объект Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

IsEnum

Возвращает значение, позволяющее определить, представляет ли текущий объект Type перечисление.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, выкладываются ли поля текущего типа с явно заданными смещениями.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, является ли текущий Type указатель функцией.

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

Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального метода.

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

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

IsGenericType

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

IsGenericTypeDefinition

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

IsGenericTypeParameter

Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального типа.

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

Возвращает значение, позволяющее определить, есть ли у объекта Type атрибут ComImportAttribute, свидетельствующий о том, что объект был импортирован из библиотеки COM-типов.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли объект Type интерфейсом (иными словами, не является классом или типом значения).

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, выкладываются ли поля текущего типа последовательно, в том порядке, в котором они были определены, или выдаются в метаданные.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, маршалирован ли объект Type по ссылке.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, представляет ли текущий объект Type тип, определение которого вложено в определение другого типа.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своей сборке.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только для классов, принадлежащих одновременно к семейству и сборке этого объекта.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своем семействе.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли данный объект Type вложенным и видимым только для классов, принадлежащих либо к его семейству, либо к его сборке.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли объект Type вложенным и объявленным как закрытый.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, является ли класс вложенным и объявленным как открытый.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, не был ли объект Type объявлен как открытый.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, является ли объект Type указателем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, является ли Type одним из типов-примитивов.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, был ли объект Type объявлен как открытый.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, позволяющее определить, был ли объект Type объявлен как запечатанный.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, которое указывает, является ли текущий тип критически важным для безопасности или защищенным критически важным для безопасности на данном уровне доверия и, следовательно, может ли он выполнять критические операции.

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

Возвращает значение, которое указывает, является ли текущий тип защищенным критически важным для безопасности на текущем уровне доверия и, следовательно, может ли он выполнять критические операции и предоставлять доступ прозрачному коду.

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

Получает значение, которое указывает, является ли текущий тип прозрачным на текущем уровне доверия и, следовательно, не может выполнять критические операции.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

IsSerializable
Устаревшие..

Возвращает значение, указывающее, является ли объект двоичным Type сериализуемым.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, показывающее, является ли тип типом сигнатуры.

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

Возвращает значение, позволяющее определить, требует ли имя данного объекта специальной обработки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, является ли тип типом массива, который может представлять только одномерный массив с нулевой нижней границей.

IsSZArray

Возвращает значение, указывающее, является ли тип типом массива, который может представлять только одномерный массив с нулевой нижней границей.

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

Возвращает значение, показывающее, является ли тип определением типа.

IsTypeDefinition

Возвращает значение, показывающее, является ли тип определением типа.

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

Возвращает значение, позволяющее определить, выбран ли для объекта UnicodeClass атрибут формата строки Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение, указывающее, является ли текущий Type указатель неуправляемой функции.

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

Возвращает значение, позволяющее определить, является ли объект Type типом значения.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

IsVariableBoundArray

Возвращает значение, указывающее, является ли тип типом массива, который может представлять многомерный массив или массив с произвольной нижней границей.

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

Возвращает значение, позволяющее определить, можно ли получить доступ к объекту Type из кода за пределами сборки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает значение MemberTypes, позволяющее определить, каким типом является этот член: обычным или вложенным.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Получает токен, который определяет текущий динамический модуль в метаданных.

MetadataToken

Получает значение, определяющее элемент метаданных.

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

Возвращает динамический модуль, содержащий параметр универсального типа.

Name

Возвращает имя универсального параметра типа.

Namespace

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

ReflectedType

Получает объект Type, который использовался для получения GenericTypeParameterBuilder.

ReflectedType

Получает объект класса, который использовался для извлечения данного экземпляра объекта MemberInfo.

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

Возвращает атрибут StructLayoutAttribute, описывающий структуру текущего типа.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

TypeInitializer

Возвращает инициализатор типа.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает текущий параметр универсального типа.

UnderlyingSystemType

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Методы

AsType()

Возвращает текущий тип в виде объекта Type.

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

Проверяет, является ли указанный объект экземпляром EventToken и равен ли он текущему экземпляру.

Equals(Type)

Позволяет определить, совпадает ли базовый системный тип текущего объекта Type с базовым системным типом указанного объекта Type.

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

Возвращает массив объектов Type, представляющий отфильтрованный список интерфейсов, реализованных или наследуемых текущим объектом Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает отфильтрованный массив объектов MemberInfo, тип которого совпадает с указанным типом члена.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetArrayRank()

Возвращает размерность массива.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

При переопределении в производном классе реализует свойство Attributes и возвращает побитовое сочетание значений перечисления, указывающих атрибуты, связанные с Type.

GetAttributeFlagsImpl()

При переопределении в производном классе реализует свойство Attributes и возвращает побитовое сочетание значений перечисления, указывающих атрибуты, связанные с Type.

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

Выполняет поиск конструктора с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений по привязке и соглашений о вызовах.

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

Выполняет поиск конструктора, параметры которого соответствуют указанным типам аргументов и модификаторам, используя заданные ограничения привязки.

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

Выполняет поиск конструктора, параметры которого соответствуют заданным типам аргументов, используя указанные ограничения привязки.

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

Выполняет поиск открытого конструктора экземпляра, параметры которого соответствуют типам, содержащимся в указанном массиве.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

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

При переопределении в производном классе ищет конструктор, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.

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

Возвращает все открытые конструкторы, определенные для текущего объекта Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetConstructors(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetCustomAttributes(Boolean)

При переопределении в производном классе возвращает массив всех настраиваемых атрибутов, примененных к данному члену.

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

Не поддерживается для неполных параметров универсального типа.

GetCustomAttributes(Type, Boolean)

При переопределении в производном классе возвращает массив настраиваемых атрибутов, применяемых к этому элементу и определяемых параметром Type.

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

Возвращает список объектов CustomAttributeData, представляющих данные об атрибутах, примененных к целевому элементу.

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

Возвращает объект , представляющий указанное событие, объявленное текущим типом.

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

Возвращает объект , представляющий указанное поле, объявленное текущим типом.

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

Возвращает объект , представляющий указанный метод, объявленный текущим типом.

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

Возвращает коллекцию, содержащую все методы, объявленные в текущем типе, соответствующие указанному имени.

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

Возвращает объект , представляющий указанный вложенный тип, объявленный текущим типом.

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

Возвращает объект , представляющий указанное свойство, объявленное текущим типом.

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

Выполняет поиск членов, определенных для текущего объекта Type, для которого задан атрибут DefaultMemberAttribute.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

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

GetEnumName(Object)

Возвращает имя константы с заданным значением для текущего типа перечисления.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает имена членов текущего типа перечисления.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает базовый тип текущего типа перечисления.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает массив значений констант в текущем типе перечисления.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Извлекает массив значений базовых констант этого типа перечисления.

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

Возвращает объект EventInfo, представляющий указанное открытое событие.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetEvent(String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetEvents()

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetEvents(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск открытого поля с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetField(String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает все открытые поля текущего объекта Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetFields(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

При переопределении в производном классе возвращает соглашения о вызовах текущего указателя Typeфункции .

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

При переопределении в производном классе возвращает типы параметров текущего указателя Typeфункции .

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

При переопределении в производном классе возвращает тип возвращаемого значения текущего указателя Typeфункции .

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

Не допустимо для параметров универсального типа.

GetGenericArguments()

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetGenericParameterConstraints()

Возвращает массив объектов Type, которые представляют ограничения, накладываемые на параметр текущего универсального типа.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не допустимо для параметров универсального типа.

GetHashCode()

Возвращает хэш-код в виде 32-разрядного целого числа для текущего экземпляра.

GetInterface(String)

Выполняет поиск интерфейса с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetInterface(String, Boolean)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetInterfaces()

Не поддерживается для неполных параметров универсального типа.

GetInterfaces()

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск открытого члена с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск указанных членов, используя заданные ограничения привязки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetMember(String, MemberTypes, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает все открытые члены текущего объекта Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetMembers(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск по MemberInfo текущему Type объекту , соответствующему указанному MemberInfoобъекту .

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

Выполняет поиск открытого метода с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск указанного метода, используя заданные ограничения привязки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет метод с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах.

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

Ищет заданный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя установленные ограничения привязки.

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

Выполняет поиск указанного метода, параметры которого соответствуют заданным типам аргументов, используя указанные ограничения привязки.

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

Ищет метод с параметрами, соответствующими указанному числу универсальных параметров, модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах.

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

Ищет заданный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя установленные ограничения привязки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров и типам аргументов.

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

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам.

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

Ищет указанный открытый метод, параметры которого соответствуют заданным типам аргументов.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск указанного открытого метода, параметры которого соответствуют указанным типам аргументов и модификаторам.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

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

При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.

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

При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах.

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

Возвращает все открытые методы текущего объекта Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetMethods(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск открытого вложенного типа с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetNestedType(String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Возвращает открытые типы, вложенные в текущий объект Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetNestedTypes(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

При переопределении в производном классе возвращает необязательные настраиваемые модификаторы текущего Typeобъекта .

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

Возвращает все открытые свойства текущего объекта Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

GetProperties(BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Выполняет поиск открытого свойства с заданным именем.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет указанное свойство, используя заданные ограничения привязки.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет свойство с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки.

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

Выполняет поиск открытого свойства с заданным именем и типом возвращаемого значения.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет заданное открытое свойство, параметры которого соответствуют указанным типам аргументов и модификаторам.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Не поддерживается для неполных параметров универсального типа.

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

При переопределении в производном классе выполняет поиск заданного свойства, параметры которого соответствуют типам и модификаторам заданных аргументов, с использованием заданных ограничений привязки.

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

При переопределении в производном классе возвращает необходимые настраиваемые модификаторы текущего Typeобъекта .

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

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

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

Выявляет атрибуты элемента и обеспечивает доступ к его метаданным.

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

Возвращает код базового типа этого экземпляра Type.

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

При переопределении в производном классе реализует свойство HasElementType и определяет, что содержится в текущем объекте Type: непосредственно другой тип или же указывающая на него ссылка (иными словами, является ли текущий объект Type массивом, указателем или параметром или же он передается по ссылке).

HasElementTypeImpl()

При переопределении в производном классе реализует свойство HasElementType и определяет, что содержится в текущем объекте Type: непосредственно другой тип или же указывающая на него ссылка (иными словами, является ли текущий объект Type массивом, указателем или параметром или же он передается по ссылке).

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Вызывает указанный член, соответствующий заданным ограничениям привязки и указанному списку аргументов.

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

Вызывает указанный член, соответствующий заданным ограничениям привязки, списку аргументов, а также языку и региональным параметрам.

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

Не поддерживается для неполных параметров универсального типа.

IsArrayImpl()

При переопределении в производном классе реализует свойство IsArray и определяет, является ли данный объект Type массивом.

IsArrayImpl()

При переопределении в производном классе реализует свойство IsArray и определяет, является ли данный объект Type массивом.

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

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

IsAssignableFrom(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

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

IsAssignableTo(Type)

Определяет, можно ли назначить текущий тип переменной указанного типа targetType.

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

При переопределении в производном классе реализует свойство IsByRef и определяет, передается ли данный объект Type по ссылке.

IsByRefImpl()

При переопределении в производном классе реализует свойство IsByRef и определяет, передается ли данный объект Type по ссылке.

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

При переопределении в производном классе реализует свойство IsCOMObject и определяет, является ли объект Type COM-объектом.

IsCOMObjectImpl()

При переопределении в производном классе реализует свойство IsCOMObject и определяет, является ли объект Type COM-объектом.

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

Реализует свойство IsContextful и определяет, можно ли поместить в контекст данный объект Type.

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

Не поддерживается для неполных параметров универсального типа.

IsDefined(Type, Boolean)

При переопределении в производном классе указывает, применяются ли для этого члена один или несколько атрибутов заданного типа или его производных типов.

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

Возвращает значение, показывающее, имеется ли в текущем типе перечисления указанное значение.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет, имеют ли два типа модели COM одинаковые удостоверения и могут ли они считаться эквивалентными.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет, является ли указанный объект экземпляром текущего типа Type.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Реализует свойство IsMarshalByRef и определяет, маршалируется ли объект Type по ссылке.

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

При переопределении в производном классе реализует свойство IsPointer и определяет, является ли объект Type указателем.

IsPointerImpl()

При переопределении в производном классе реализует свойство IsPointer и определяет, является ли объект Type указателем.

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

При переопределении в производном классе реализует свойство IsPrimitive и определяет, является ли объект Type одним из типов-примитивов.

IsPrimitiveImpl()

При переопределении в производном классе реализует свойство IsPrimitive и определяет, является ли объект Type одним из типов-примитивов.

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

Не поддерживается для неполных параметров универсального типа.

IsValueTypeImpl()

Реализует свойство IsValueType и определяет, является ли объект Type типом значения (иными словами, не является классом или интерфейсом).

IsValueTypeImpl()

Реализует свойство IsValueType и определяет, является ли объект Type типом значения (иными словами, не является классом или интерфейсом).

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

Возвращает тип одномерного массива, тип элементов которого является параметром универсального типа.

MakeArrayType(Int32)

Возвращает тип массива, тип элементов которого является параметром универсального типа с указанным количеством измерений.

MakeByRefType()

Возвращает объект Type, который представляет текущий параметр универсального типа, когда выполняется передача в качестве параметра ссылки.

MakeGenericType(Type[])

Недопустимо для неполных параметров универсального типа.

MakePointerType()

Возвращает объект Type, который представляет указатель на текущий параметр универсального типа.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

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

Задает базовый тип, который должен наследоваться типом, для подстановки вместо параметра типа.

SetBaseTypeConstraintCore(Type)

При переопределении в производном классе задает базовый тип, который должен наследовать тип для замены параметра типа.

SetCustomAttribute(ConstructorInfo, Byte[])

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

SetCustomAttribute(CustomAttributeBuilder)

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

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

При переопределении в производном классе задает настраиваемый атрибут для этой сборки.

SetGenericParameterAttributes(GenericParameterAttributes)

Задает характеристики расхождения и особые ограничения универсального параметра, например ограничение конструктора без параметров.

SetGenericParameterAttributesCore(GenericParameterAttributes)

При переопределении в производном классе задает характеристики дисперсии и специальные ограничения универсального параметра, такие как ограничение конструктора без параметров.

SetInterfaceConstraints(Type[])

Задает интерфейсы, которые должны быть реализованы типом для использования вместо параметра типа.

SetInterfaceConstraintsCore(Type[])

При переопределении в производном классе задает интерфейсы, которые должен реализовать тип для замены параметра типа.

ToString()

Возвращает строковое представление текущего параметра универсального типа.

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

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

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

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

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

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.

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

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

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

Предоставляет доступ к открытым свойствам и методам объекта.

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

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

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.

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

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

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

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Type)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Возвращает массив всех настраиваемых атрибутов, определенных для этого элемента, за исключением именованных атрибутов, или пустой массив, если атрибуты отсутствуют.

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

Возвращает массив настраиваемых атрибутов, определенных для этого элемента с учетом типа, или пустой массив, если отсутствуют настраиваемые атрибуты определенного типа.

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

Указывает, сколько экземпляров attributeType определено для этого элемента.

(Унаследовано от MemberInfo)
IReflectableType.GetTypeInfo()

Возвращает представление текущего типа объекта TypeInfo.

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

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

GetCustomAttribute(MemberInfo, Type)

Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу.

GetCustomAttribute(MemberInfo, Type, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.

GetCustomAttribute<T>(MemberInfo)

Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу.

GetCustomAttribute<T>(MemberInfo, Boolean)

Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.

GetCustomAttributes(MemberInfo)

Извлекает коллекцию настраиваемых атрибутов, примененных к указанному члену.

GetCustomAttributes(MemberInfo, Boolean)

Извлекает коллекцию пользовательских атрибутов, которые применяются к указанному элементу и, при необходимости, проверяет предков этого элемента.

GetCustomAttributes(MemberInfo, Type)

Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу.

GetCustomAttributes(MemberInfo, Type, Boolean)

Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.

GetCustomAttributes<T>(MemberInfo)

Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу.

GetCustomAttributes<T>(MemberInfo, Boolean)

Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента.

IsDefined(MemberInfo, Type)

Указывает, применены ли какие-либо пользовательские атрибуты заданного типа к указанному члену.

IsDefined(MemberInfo, Type, Boolean)

Указывает применены ли настраиваемые атрибуты указанного типа к указанному элементу и, при необходимости, применены ли они к его предкам.

GetTypeInfo(Type)

Возвращает представление TypeInfo указанного типа.

GetMetadataToken(MemberInfo)

Возвращает маркер метаданных для заданного элемента, если он доступен.

HasMetadataToken(MemberInfo)

Возвращает значение, указывающее, доступен ли маркер метаданных для указанного элемента.

GetRuntimeEvent(Type, String)

Получает объект, представляющий указанное событие.

GetRuntimeEvents(Type)

Извлекает коллекцию, представляющую все события, определенные в указанном типе.

GetRuntimeField(Type, String)

Извлекает объект , который представляет указанное поле.

GetRuntimeFields(Type)

Извлекает коллекцию, представляющую все поля, определенные в указанном типе.

GetRuntimeInterfaceMap(TypeInfo, Type)

Возвращает сопоставление интерфейса для заданного типа и указанного интерфейса.

GetRuntimeMethod(Type, String, Type[])

Извлекает объект, который представляет указанный метод.

GetRuntimeMethods(Type)

Извлекает коллекцию, представляющую все методы, определенные в указанном типе.

GetRuntimeProperties(Type)

Извлекает коллекцию, представляющую все свойства, определенные в указанном типе.

GetRuntimeProperty(Type, String)

Извлекает объект, который представляет указанное свойство.

GetConstructor(Type, Type[])

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetConstructors(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetConstructors(Type, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetFields(Type, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetGenericArguments(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetInterfaces(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetMember(Type, String)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetMember(Type, String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetMembers(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetMethods(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetNestedType(Type, String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetProperties(Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetProperties(Type, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetProperty(Type, String, BindingFlags)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

GetProperty(Type, String, Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

IsAssignableFrom(Type, Type)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

IsInstanceOfType(Type, Object)

Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.

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

См. также раздел