共用方式為


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

備註

您可以使用 TypeBuilder.DefineGenericParameters 方法,將型別參數新增至動態型別、使其成為泛型型別,或使用 MethodBuilder.DefineGenericParameters 方法將型別參數新增至動態方法,以取得 GenericTypeParameterBuilder 對象的陣列。 使用 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

取得值,指出是否已為 Type選取字串格式屬性 AnsiClass

(繼承來源 Type)
IsAnsiClass

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

(繼承來源 TypeInfo)
IsArray

取得值,這個值表示型別是否為陣列。

(繼承來源 Type)
IsArray

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

(繼承來源 TypeInfo)
IsAutoClass

取得值,指出是否已為 Type選取字串格式屬性 AutoClass

(繼承來源 Type)
IsAutoClass

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

(繼承來源 TypeInfo)
IsAutoLayout

取得值,指出目前類型的字段是否由 Common Language Runtime 自動配置。

(繼承來源 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

取得值,指出是否已為 Type選取字串格式屬性 UnicodeClass

(繼承來源 Type)
IsUnicodeClass

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

(繼承來源 TypeInfo)
IsUnmanagedFunctionPointer

取得值,這個值表示目前 Type 是否為 Unmanaged 函式指標。

(繼承來源 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

取得用來取得 GenericTypeParameterBuilderType 物件。

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

搜尋已設定 DefaultMemberAttribute 之目前 Type 所定義的成員。

(繼承來源 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)

搜尋目前 Type 上符合指定 MemberInfoMemberInfo

(繼承來源 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[])

使用指定的自定義屬性 Blob 設定自訂屬性。

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

取得代表 MemberInfo 類別的 Type 物件。

(繼承來源 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)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetDefaultMembers(Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetEvent(Type, String, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetField(Type, String, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetInterfaces(Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetMember(Type, String, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetMembers(Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetMethod(Type, String, Type[])

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetNestedType(Type, String, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetProperties(Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetProperties(Type, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetProperty(Type, String)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetProperty(Type, String, BindingFlags)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

GetProperty(Type, String, Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

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

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

IsAssignableFrom(Type, Type)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

IsInstanceOfType(Type, Object)

定義並建立動態定義泛型型別和方法的泛型型別參數。 無法繼承這個類別。

適用於

另請參閱