GenericTypeParameterBuilder 類別

定義

定義和建立動態定義泛型類型和方法的泛型型別參數。Defines and creates generic type parameters for dynamically defined generic types and methods. 此類別無法獲得繼承。This class cannot be inherited.

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
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : Type
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
public abstract 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
繼承
GenericTypeParameterBuilder
屬性

範例

下列程式碼範例會建立具有兩個型別參數的泛型型別,並將它們儲存在元件 GenericEmitExample1.dll 中。The following code example creates a generic type with two type parameters, and saves them in the assembly GenericEmitExample1.dll. 您可以使用 Ildasm.exe (IL 解譯器) 來查看產生的類型。You can use the Ildasm.exe (IL Disassembler) to view the generated types. 如需定義動態泛型型別所涉及之步驟的詳細說明,請參閱 如何:使用反映發出定義泛型型別。For a more detailed explanation of the steps involved in defining a dynamic generic type, see How to: Define a Generic Type with Reflection Emit.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   DisplayGenericParameters(finished);
}

/* This code example produces the following output:

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

There are 2 elements in the List<Example>.

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

Type parameter TFirst:
    ReferenceTypeConstraint
    DefaultConstructorConstraint

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

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

public interface IExampleA {}

public interface IExampleB {}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        DisplayGenericParameters(finished);
    }

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

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

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

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

            ListConstraintAttributes(tParam);
        }
    }

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

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

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

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

/* This code example produces the following output:

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

There are 2 elements in the List<Example>.

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

Type parameter TFirst:
    ReferenceTypeConstraint
    DefaultConstructorConstraint

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

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

Public Interface IExampleA
End Interface

Public Interface IExampleB
End Interface

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        DisplayGenericParameters(finished)
    End Sub

    Private Shared Sub DisplayGenericParameters(ByVal t As Type)

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

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

        For Each tParam As Type In typeParameters

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

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

            ListConstraintAttributes(tParam)
        Next tParam
    End Sub

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

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

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

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

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

    End Sub 

End Class

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

備註

您可以 GenericTypeParameterBuilder 使用方法來取得物件的陣列 TypeBuilder.DefineGenericParameters ,方法是將型別參數加入至動態型別,使其成為泛型型別,或使用 MethodBuilder.DefineGenericParameters 方法將型別參數加入至動態方法。You can get an array of GenericTypeParameterBuilder objects by using the TypeBuilder.DefineGenericParameters method to add type parameters to a dynamic type, thus making it a generic type, or by using the MethodBuilder.DefineGenericParameters method to add type parameters to a dynamic method. 使用 GenericTypeParameterBuilder 物件將條件約束加入至型別參數。Use the GenericTypeParameterBuilder objects to add constraints to the type parameters. 條件約束的類型有三種:Constraints are of three kinds:

  • 基底類型條件約束指定任何指派給泛型型別參數的型別都必須衍生自特定的基底型別。The base type constraint specifies that any type assigned to the generic type parameter must derive from a particular base type. 請使用方法來設定此條件約束 SetBaseTypeConstraintSet this constraint by using the SetBaseTypeConstraint method.

  • 介面條件約束指定任何指派給泛型型別參數的型別都必須執行特定的介面。An interface constraint specifies that any type assigned to the generic type parameter must implement a particular interface. 使用方法來設定介面條件約束 SetInterfaceConstraintsSet the interface constraints by using the SetInterfaceConstraints method.

  • 特殊條件約束指定任何指派給泛型型別參數的類型都必須具有無參數的函式、必須是參考型別,或必須是實值型別。Special constraints specify that any type assigned to the generic type parameter must have a parameterless constructor, must be a reference type, or must be a value type. 使用方法設定類型參數的特殊條件約束 SetGenericParameterAttributesSet the special constraints for a type parameter by using the SetGenericParameterAttributes method.

無法使用類別的方法來抓取介面條件約束和特殊條件約束 GenericTypeParameterBuilderInterface constraints and special constraints cannot be retrieved using methods of the GenericTypeParameterBuilder class. 一旦您建立包含型別參數的泛型型別,就可以使用它的 Type 物件來反映條件約束。Once you have created the generic type that contains the type parameters, you can use its Type object to reflect the constraints. Type.GetGenericArguments 可以使用方法來取得型別參數,並針對每個型別參數使用 Type.GetGenericParameterConstraints 方法來取得基底類型條件約束和介面條件約束,並使用 Type.GenericParameterAttributes 屬性來取得特殊條件約束。Use the Type.GetGenericArguments method to get the type parameters, and for each type parameter use the Type.GetGenericParameterConstraints method to get the base type constraint and interface constraints, and the Type.GenericParameterAttributes property to get the special constraints.

建構函式

GenericTypeParameterBuilder()

屬性

Assembly

取得 Assembly 所屬的物件,代表包含泛型型別定義目前的型別參數的動態組件。Gets an Assembly object representing the dynamic assembly that contains the generic type definition the current type parameter belongs to.

AssemblyQualifiedName

取得所有情況下的 nullGets null in all cases.

Attributes
Attributes

取得與 Type 關聯的屬性。Gets the attributes associated with the Type.

(繼承來源 Type)
Attributes (繼承來源 TypeInfo)
BaseType

取得目前泛型型別參數的基底類型條件約束。Gets the base type constraint of the current generic type parameter.

ContainsGenericParameters

取得所有情況下的 trueGets true in all cases.

ContainsGenericParameters (繼承來源 TypeInfo)
CustomAttributes

取得包含此成員之自訂屬性的集合。Gets a collection that contains this member's custom attributes.

(繼承來源 MemberInfo)
DeclaredConstructors

取得目前類型所宣告之建構函式的集合。Gets a collection of the constructors declared by the current type.

(繼承來源 TypeInfo)
DeclaredEvents

取得目前類型所定義之事件的集合。Gets a collection of the events defined by the current type.

(繼承來源 TypeInfo)
DeclaredFields

取得目前類型所定義之欄位的集合。Gets a collection of the fields defined by the current type.

(繼承來源 TypeInfo)
DeclaredMembers

取得目前類型所定義之成員的集合。Gets a collection of the members defined by the current type.

(繼承來源 TypeInfo)
DeclaredMethods

取得目前類型所定義之方法的集合。Gets a collection of the methods defined by the current type.

(繼承來源 TypeInfo)
DeclaredNestedTypes

取得目前類型所定義之巢狀類型的集合。Gets a collection of the nested types defined by the current type.

(繼承來源 TypeInfo)
DeclaredProperties

取得目前類型所定義之屬性的集合。Gets a collection of the properties defined by the current type.

(繼承來源 TypeInfo)
DeclaringMethod

如果目前的 MethodInfo 表示泛型方法的型別參數,則取得表示宣告方法的 GenericTypeParameterBuilderGets a MethodInfo that represents the declaring method, if the current GenericTypeParameterBuilder represents a type parameter of a generic method.

DeclaringMethod (繼承來源 TypeInfo)
DeclaringType

取得泛型型別參數所屬的泛型類型定義或泛型方法定義。Gets the generic type definition or generic method definition to which the generic type parameter belongs.

DeclaringType

取得宣告目前巢狀類型或泛型型別參數的類型。Gets the type that declares the current nested type or generic type parameter.

(繼承來源 Type)
FullName

取得所有情況下的 nullGets null in all cases.

GenericParameterAttributes

取得一組 GenericParameterAttributes 旗標,敘述目前泛型類型參數的共變數與特殊條件約束。Gets a combination of GenericParameterAttributes flags that describe the covariance and special constraints of the current generic type parameter.

GenericParameterAttributes

取得一組 GenericParameterAttributes 旗標,敘述目前泛型類型參數的共變數與特殊條件約束。Gets a combination of GenericParameterAttributes flags that describe the covariance and special constraints of the current generic type parameter.

(繼承來源 Type)
GenericParameterAttributes (繼承來源 TypeInfo)
GenericParameterPosition

取得類型參數在宣告參數的泛型類型或方法之類型參數清單中的位置。Gets the position of the type parameter in the type parameter list of the generic type or method that declared the parameter.

GenericParameterPosition (繼承來源 TypeInfo)
GenericTypeArguments
GenericTypeArguments

取得此類型之泛型類型引數的陣列。Gets an array of the generic type arguments for this type.

(繼承來源 Type)
GenericTypeArguments (繼承來源 TypeInfo)
GenericTypeParameters

取得目前執行個體之泛型類型的陣列。Gets an array of the generic type parameters of the current instance.

(繼承來源 TypeInfo)
GUID

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

HasElementType

取得值,指出目前 Type 是否內含或參考其他類型;也就是說,目前 Type 是否為陣列、指標或以傳址方式傳遞。Gets a value indicating whether the current Type encompasses or refers to another type; that is, whether the current Type is an array, a pointer, or is passed by reference.

(繼承來源 Type)
HasElementType (繼承來源 TypeInfo)
ImplementedInterfaces

取得目前類型所實作之介面的集合。Gets a collection of the interfaces implemented by the current type.

(繼承來源 TypeInfo)
IsAbstract

取得值,指出 Type 是否為抽象並且必須被覆寫。Gets a value indicating whether the Type is abstract and must be overridden.

(繼承來源 Type)
IsAbstract (繼承來源 TypeInfo)
IsAnsiClass

取得值,指出是否為 AnsiClass 選取字串格式屬性 TypeGets a value indicating whether the string format attribute AnsiClass is selected for the Type.

(繼承來源 Type)
IsAnsiClass (繼承來源 TypeInfo)
IsArray

取得值,以表示類型是否為陣列。Gets a value that indicates whether the type is an array.

(繼承來源 Type)
IsArray (繼承來源 TypeInfo)
IsAutoClass

取得值,指出是否為 AutoClass 選取字串格式屬性 TypeGets a value indicating whether the string format attribute AutoClass is selected for the Type.

(繼承來源 Type)
IsAutoClass (繼承來源 TypeInfo)
IsAutoLayout

取得表示目前類型的欄位是否已由 Common Language Runtime 自動配置版面的值。Gets a value indicating whether the fields of the current type are laid out automatically by the common language runtime.

(繼承來源 Type)
IsAutoLayout (繼承來源 TypeInfo)
IsByRef

取得值,指出 Type 是否以傳址方式傳遞。Gets a value indicating whether the Type is passed by reference.

(繼承來源 Type)
IsByRef (繼承來源 TypeInfo)
IsByRefLike
IsByRefLike

取得值,指出類型是否為 byref-like 結構。Gets a value that indicates whether the type is a byref-like structure.

(繼承來源 Type)
IsClass

取得值,表示 Type 是類別或委派,也就是非實值類型或介面。Gets a value indicating whether the Type is a class or a delegate; that is, not a value type or interface.

(繼承來源 Type)
IsClass (繼承來源 TypeInfo)
IsCollectible

取得指出此 MemberInfo 物件是否為可回收 AssemblyLoadContext 中保存之組件一部分的值。Gets a value that indicates whether this MemberInfo object is part of an assembly held in a collectible AssemblyLoadContext.

(繼承來源 MemberInfo)
IsCOMObject

取得值,指出 Type 是否為 COM 物件。Gets a value indicating whether the Type is a COM object.

(繼承來源 Type)
IsCOMObject (繼承來源 TypeInfo)
IsConstructedGenericType

取得值,指出這個物件是否表示建構的泛型類型。Gets a value that indicates whether this object represents a constructed generic type.

IsConstructedGenericType

取得值,指出這個物件是否表示建構的泛型類型。Gets a value that indicates whether this object represents a constructed generic type. 您可以建立已建構之泛型類型的執行個體。You can create instances of a constructed generic type.

(繼承來源 Type)
IsContextful

取得值,指出在內容中是否可以裝載 TypeGets a value indicating whether the Type can be hosted in a context.

(繼承來源 Type)
IsEnum
IsEnum

取得值,指出目前的 Type 是否表示列舉類型。Gets a value indicating whether the current Type represents an enumeration.

(繼承來源 Type)
IsEnum (繼承來源 TypeInfo)
IsExplicitLayout

取得表示目前類型的欄位是否已在明確指定之位移配置版面的值。Gets a value indicating whether the fields of the current type are laid out at explicitly specified offsets.

(繼承來源 Type)
IsExplicitLayout (繼承來源 TypeInfo)
IsGenericMethodParameter

取得值,指出目前的 Type 是否在泛型方法的定義中代表型別參數。Gets a value that indicates whether the current Type represents a type parameter in the definition of a generic method.

(繼承來源 Type)
IsGenericParameter

取得所有情況下的 trueGets true in all cases.

IsGenericParameter (繼承來源 TypeInfo)
IsGenericType

在所有情況下都會傳回 falseReturns false in all cases.

IsGenericType (繼承來源 TypeInfo)
IsGenericTypeDefinition

取得所有情況下的 falseGets false in all cases.

IsGenericTypeDefinition (繼承來源 TypeInfo)
IsGenericTypeParameter

取得值,指出目前的 Type 是否在泛型型別的定義中代表型別參數。Gets a value that indicates whether the current Type represents a type parameter in the definition of a generic type.

(繼承來源 Type)
IsImport

取得值,指出 Type 是否套用了 ComImportAttribute 屬性 (Attribute),亦即其是否從 COM 類型程式庫匯入。Gets a value indicating whether the Type has a ComImportAttribute attribute applied, indicating that it was imported from a COM type library.

(繼承來源 Type)
IsImport (繼承來源 TypeInfo)
IsInterface

取得值,指出 Type 是否為介面;也就是說,不是類別或實值類型。Gets a value indicating whether the Type is an interface; that is, not a class or a value type.

(繼承來源 Type)
IsInterface (繼承來源 TypeInfo)
IsLayoutSequential

取得表示目前類型的欄位是否已依為其定義或發出至中繼資料之順序,循序配置版面的值。Gets a value indicating whether the fields of the current type are laid out sequentially, in the order that they were defined or emitted to the metadata.

(繼承來源 Type)
IsLayoutSequential (繼承來源 TypeInfo)
IsMarshalByRef

取得值,指出 Type 是否以傳址方式封送處理。Gets a value indicating whether the Type is marshaled by reference.

(繼承來源 Type)
IsMarshalByRef (繼承來源 TypeInfo)
IsNested

取得值,表示目前的 Type 物件代表的類型之定義是否位於另一個類型的定義內部。Gets a value indicating whether the current Type object represents a type whose definition is nested inside the definition of another type.

(繼承來源 Type)
IsNested (繼承來源 TypeInfo)
IsNestedAssembly

取得值,指出 Type 是否為巢狀,並只在它自己的組件內為可見。Gets a value indicating whether the Type is nested and visible only within its own assembly.

(繼承來源 Type)
IsNestedAssembly (繼承來源 TypeInfo)
IsNestedFamANDAssem

取得值,指出 Type 是否為巢狀,並只對同時屬於它自己家族和它自己組件的類別為可見。Gets a value indicating whether the Type is nested and visible only to classes that belong to both its own family and its own assembly.

(繼承來源 Type)
IsNestedFamANDAssem (繼承來源 TypeInfo)
IsNestedFamily

取得值,指出 Type 是否為巢狀,並只在它自己的系列內為可見。Gets a value indicating whether the Type is nested and visible only within its own family.

(繼承來源 Type)
IsNestedFamily (繼承來源 TypeInfo)
IsNestedFamORAssem

取得值,指出 Type 是否為巢狀並只對屬於它自己家族或它自己組件的類別為可見。Gets a value indicating whether the Type is nested and visible only to classes that belong to either its own family or to its own assembly.

(繼承來源 Type)
IsNestedFamORAssem (繼承來源 TypeInfo)
IsNestedPrivate

取得值,指出 Type 是否為巢狀並且宣告為私用。Gets a value indicating whether the Type is nested and declared private.

(繼承來源 Type)
IsNestedPrivate (繼承來源 TypeInfo)
IsNestedPublic

取得值,指出類別是否為巢狀 (Nest) 並且宣告為公用 (Public)。Gets a value indicating whether a class is nested and declared public.

(繼承來源 Type)
IsNestedPublic (繼承來源 TypeInfo)
IsNotPublic

取得值,指出 Type 是否未宣告為公用。Gets a value indicating whether the Type is not declared public.

(繼承來源 Type)
IsNotPublic (繼承來源 TypeInfo)
IsPointer

取得值,指出 Type 是否為指標。Gets a value indicating whether the Type is a pointer.

(繼承來源 Type)
IsPointer (繼承來源 TypeInfo)
IsPrimitive

取得值,指出 Type 是否為其中一個基本類型 (Primitive Type)。Gets a value indicating whether the Type is one of the primitive types.

(繼承來源 Type)
IsPrimitive (繼承來源 TypeInfo)
IsPublic

取得值,指出 Type 是否宣告為公用。Gets a value indicating whether the Type is declared public.

(繼承來源 Type)
IsPublic (繼承來源 TypeInfo)
IsSealed

取得值,指出 Type 是否宣告為密封。Gets a value indicating whether the Type is declared sealed.

(繼承來源 Type)
IsSealed (繼承來源 TypeInfo)
IsSecurityCritical

取得值,這個值表示目前類型在目前信任層級上是否為安全性關鍵或安全性安全關鍵,因而可以執行重要的作業。Gets a value that indicates whether the current type is security-critical or security-safe-critical at the current trust level, and therefore can perform critical operations.

(繼承來源 Type)
IsSecuritySafeCritical

取得值,這個值表示目前類型在目前信任層級上是否為安全性安全關鍵,也就是說,它是否能執行重要作業並由安全性透明的程式碼存取。Gets a value that indicates whether the current type is security-safe-critical at the current trust level; that is, whether it can perform critical operations and can be accessed by transparent code.

(繼承來源 Type)
IsSecurityTransparent

取得值,這個值表示目前類型在目前信任層級上是否為透明,因此無法執行重要作業。Gets a value that indicates whether the current type is transparent at the current trust level, and therefore cannot perform critical operations.

(繼承來源 Type)
IsSerializable
IsSerializable

取得值,指出 Type 是否可序列化。Gets a value indicating whether the Type is serializable.

(繼承來源 Type)
IsSerializable (繼承來源 TypeInfo)
IsSignatureType

取得值,指出類型是否為特徵標記類型。Gets a value that indicates whether the type is a signature type.

(繼承來源 Type)
IsSpecialName

取得值,表示類型是否具有需要特殊處理的名稱。Gets a value indicating whether the type has a name that requires special handling.

(繼承來源 Type)
IsSpecialName (繼承來源 TypeInfo)
IsSZArray
IsSZArray

取得值,指出類型是否為陣列類型,且只能代表下限為零的一維陣列。Gets a value that indicates whether the type is an array type that can represent only a single-dimensional array with a zero lower bound.

(繼承來源 Type)
IsTypeDefinition
IsTypeDefinition

取得值,指出類型是否為類型定義。Gets a value that indicates whether the type is a type definition.

(繼承來源 Type)
IsUnicodeClass

取得值,指出是否為 UnicodeClass 選取字串格式屬性 TypeGets a value indicating whether the string format attribute UnicodeClass is selected for the Type.

(繼承來源 Type)
IsUnicodeClass (繼承來源 TypeInfo)
IsValueType

取得值,指出 Type 是否為實值類型。Gets a value indicating whether the Type is a value type.

(繼承來源 Type)
IsValueType (繼承來源 TypeInfo)
IsVariableBoundArray
IsVariableBoundArray

取得值,指出類型是否為陣列類型,且可代表多維陣列或任意下限的陣列。Gets a value that indicates whether the type is an array type that can represent a multi-dimensional array or an array with an arbitrary lower bound.

(繼承來源 Type)
IsVisible

取得一個值,表示位於組件之外的程式碼是否能存取 TypeGets a value indicating whether the Type can be accessed by code outside the assembly.

(繼承來源 Type)
IsVisible (繼承來源 TypeInfo)
MemberType

取得一個 MemberTypes 值,代表這個成員是類型或巢狀類型。Gets a MemberTypes value indicating that this member is a type or a nested type.

(繼承來源 Type)
MemberType (繼承來源 TypeInfo)
MetadataToken

取得值,這個值可識別中繼資料項目。Gets a value that identifies a metadata element.

(繼承來源 MemberInfo)
Module

取得包含泛型型別參數的動態模組。Gets the dynamic module that contains the generic type parameter.

Name

取得泛型類型參數的名稱。Gets the name of the generic type parameter.

Namespace

取得所有情況下的 nullGets null in all cases.

ReflectedType

取得 Type 物件,用來取得 GenericTypeParameterBuilderGets the Type object that was used to obtain the GenericTypeParameterBuilder.

ReflectedType

取得類別物件,是用來取得這個 MemberInfo 的執行個體。Gets the class object that was used to obtain this instance of MemberInfo.

(繼承來源 MemberInfo)
ReflectedType

取得用來取得這個成員的類別物件。Gets the class object that was used to obtain this member.

(繼承來源 Type)
StructLayoutAttribute

取得描述目前類型配置的 StructLayoutAttributeGets a StructLayoutAttribute that describes the layout of the current type.

(繼承來源 Type)
StructLayoutAttribute (繼承來源 TypeInfo)
TypeHandle

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

TypeHandle

取得目前 Type 的控制代碼。Gets the handle for the current Type.

(繼承來源 Type)
TypeInitializer

取得類型的初始設定式。Gets the initializer for the type.

(繼承來源 Type)
TypeInitializer (繼承來源 TypeInfo)
UnderlyingSystemType

取得目前的泛型型別參數。Gets the current generic type parameter.

UnderlyingSystemType (繼承來源 TypeInfo)

方法

AsType()

Type 物件方式傳回目前類型。Returns the current type as a Type object.

(繼承來源 TypeInfo)
Equals(Object)

測試指定物件是否為 EventToken 的執行個體,且是否等於目前的執行個體。Tests whether the given object is an instance of EventToken and is equal to the current instance.

Equals(Object)

判斷目前 Type 物件的基礎系統類型,是否與指定的 Object 的基礎系統類型相同。Determines if the underlying system type of the current Type object is the same as the underlying system type of the specified Object.

(繼承來源 Type)
Equals(Type)

判斷目前 Type 的基礎系統類型,是否與指定的 Type 之基礎系統類型相同。Determines if the underlying system type of the current Type is the same as the underlying system type of the specified Type.

(繼承來源 Type)
FindInterfaces(TypeFilter, Object)

傳回 Type 物件的陣列,表示由目前 Type 所實作或繼承的介面的篩選清單。Returns an array of Type objects representing a filtered list of interfaces implemented or inherited by the current Type.

(繼承來源 Type)
FindInterfaces(TypeFilter, Object) (繼承來源 TypeInfo)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

傳回指定成員類型的 MemberInfo 物件的篩選陣列。Returns a filtered array of MemberInfo objects of the specified member type.

(繼承來源 Type)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) (繼承來源 TypeInfo)
GetArrayRank()
GetArrayRank()

取得陣列中的維度數目。Gets the number of dimensions in an array.

(繼承來源 Type)
GetArrayRank() (繼承來源 TypeInfo)
GetAttributeFlagsImpl()
GetAttributeFlagsImpl()

在衍生類別中覆寫時,實作 Attributes 屬性 (Property) 並取得列舉值的位元組合,以指出與 Type 建立關聯的屬性 (Attribute)。When overridden in a derived class, implements the Attributes property and gets a bitwise combination of enumeration values that indicate the attributes associated with the Type.

(繼承來源 Type)
GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

使用指定的繫結條件約束和指定的呼叫慣例,搜尋其參數符合指定的引數類型和修飾詞的建構函式。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

使用指定的繫結條件約束 (Constraint) 搜尋其參數符合指定的引數類型和修飾詞 (Modifier) 的建構函式。Searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(繼承來源 Type)
GetConstructor(Type[])

搜尋其參數符合在指定陣列中的類型的公用執行個體建構函式。Searches for a public instance constructor whose parameters match the types in the specified array.

(繼承來源 Type)
GetConstructor(Type[]) (繼承來源 TypeInfo)
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

在衍生類別中覆寫時,使用指定的繫結條件約束和指定的呼叫慣例,搜尋其參數符合指定的引數類型和修飾詞的建構函式。When overridden in a derived class, searches for a constructor whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetConstructors()

傳回所有定義給目前 Type 的公用建構函式。Returns all the public constructors defined for the current Type.

(繼承來源 Type)
GetConstructors() (繼承來源 TypeInfo)
GetConstructors(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetConstructors(BindingFlags) (繼承來源 TypeInfo)
GetCustomAttributes(Boolean)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetCustomAttributes(Boolean)

在衍生類別中覆寫時,傳回套用至此成員之所有自訂屬性的陣列。When overridden in a derived class, returns an array of all custom attributes applied to this member.

(繼承來源 MemberInfo)
GetCustomAttributes(Type, Boolean)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetCustomAttributes(Type, Boolean)

當在衍生的類別中覆寫時,會傳回套用至這個成員的自訂屬性陣列,並以 Type 識別。When overridden in a derived class, returns an array of custom attributes applied to this member and identified by Type.

(繼承來源 MemberInfo)
GetCustomAttributesData()

傳回 CustomAttributeData 物件的清單,表示已套用至目標成員之屬性的資料。Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member.

(繼承來源 MemberInfo)
GetDeclaredEvent(String)

傳回物件,此物件代表目前類型所宣告的指定公用事件。Returns an object that represents the specified public event declared by the current type.

(繼承來源 TypeInfo)
GetDeclaredField(String)

傳回物件,此物件代表目前類型所宣告的指定公用欄位。Returns an object that represents the specified public field declared by the current type.

(繼承來源 TypeInfo)
GetDeclaredMethod(String)

傳回物件,此物件代表目前類型所宣告的指定公用方法。Returns an object that represents the specified public method declared by the current type.

(繼承來源 TypeInfo)
GetDeclaredMethods(String)

傳回集合,其中包含所有在目前類型宣告之所有公用方法中符合指定名稱者。Returns a collection that contains all public methods declared on the current type that match the specified name.

(繼承來源 TypeInfo)
GetDeclaredNestedType(String)

傳回物件,此物件代表目前類型所宣告的指定公用巢狀類型。Returns an object that represents the specified public nested type declared by the current type.

(繼承來源 TypeInfo)
GetDeclaredProperty(String)

傳回物件,此物件代表目前類型所宣告的指定公用屬性。Returns an object that represents the specified public property declared by the current type.

(繼承來源 TypeInfo)
GetDefaultMembers()

搜尋定義給目前 Type 的成員,而它的 DefaultMemberAttribute 已設定。Searches for the members defined for the current Type whose DefaultMemberAttribute is set.

(繼承來源 Type)
GetDefaultMembers() (繼承來源 TypeInfo)
GetElementType()

在所有情況下都擲回 NotSupportedExceptionThrows a NotSupportedException in all cases.

GetEnumName(Object)

針對目前的列舉類型,傳回具有指定值之常數的名稱。Returns the name of the constant that has the specified value, for the current enumeration type.

(繼承來源 Type)
GetEnumName(Object) (繼承來源 TypeInfo)
GetEnumNames()

傳回目前列舉類型之成員的名稱。Returns the names of the members of the current enumeration type.

(繼承來源 Type)
GetEnumNames() (繼承來源 TypeInfo)
GetEnumUnderlyingType()

傳回目前列舉類型的基礎類型。Returns the underlying type of the current enumeration type.

(繼承來源 Type)
GetEnumUnderlyingType() (繼承來源 TypeInfo)
GetEnumValues()

傳回目前列舉類型中常數的值陣列。Returns an array of the values of the constants in the current enumeration type.

(繼承來源 Type)
GetEnumValues() (繼承來源 TypeInfo)
GetEvent(String)

傳回代表指定公用事件的 EventInfo 物件。Returns the EventInfo object representing the specified public event.

(繼承來源 Type)
GetEvent(String) (繼承來源 TypeInfo)
GetEvent(String, BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetEvent(String, BindingFlags) (繼承來源 TypeInfo)
GetEvents()

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetEvents() (繼承來源 TypeInfo)
GetEvents(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetEvents(BindingFlags) (繼承來源 TypeInfo)
GetField(String)

搜尋具有指定名稱的公用欄位。Searches for the public field with the specified name.

(繼承來源 Type)
GetField(String) (繼承來源 TypeInfo)
GetField(String, BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetField(String, BindingFlags) (繼承來源 TypeInfo)
GetFields()

傳回目前 Type 的所有公用欄位。Returns all the public fields of the current Type.

(繼承來源 Type)
GetFields() (繼承來源 TypeInfo)
GetFields(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetFields(BindingFlags) (繼承來源 TypeInfo)
GetGenericArguments()

對泛型型別參數無效。Not valid for generic type parameters.

GetGenericArguments() (繼承來源 TypeInfo)
GetGenericParameterConstraints()
GetGenericParameterConstraints()

傳回由 Type 物件組成的陣列,這些物件代表對目前泛型類型參數所設下的條件約束。Returns an array of Type objects that represent the constraints on the current generic type parameter.

(繼承來源 Type)
GetGenericParameterConstraints() (繼承來源 TypeInfo)
GetGenericTypeDefinition()

對泛型型別參數無效。Not valid for generic type parameters.

GetGenericTypeDefinition() (繼承來源 TypeInfo)
GetHashCode()

傳回目前執行個體的 32 位元整數雜湊碼。Returns a 32-bit integer hash code for the current instance.

GetHashCode()

傳回這個執行個體的雜湊碼。Returns the hash code for this instance.

(繼承來源 Type)
GetInterface(String)

搜尋具有指定名稱的介面。Searches for the interface with the specified name.

(繼承來源 Type)
GetInterface(String) (繼承來源 TypeInfo)
GetInterface(String, Boolean)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetInterface(String, Boolean) (繼承來源 TypeInfo)
GetInterfaceMap(Type)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetInterfaceMap(Type)

傳回指定介面類型的介面對應。Returns an interface mapping for the specified interface type.

(繼承來源 Type)
GetInterfaces()

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetInterfaces() (繼承來源 TypeInfo)
GetMember(String)

搜尋具有指定名稱的公用成員。Searches for the public members with the specified name.

(繼承來源 Type)
GetMember(String) (繼承來源 TypeInfo)
GetMember(String, BindingFlags)

使用指定的繫結條件約束搜尋指定的成員。Searches for the specified members, using the specified binding constraints.

(繼承來源 Type)
GetMember(String, BindingFlags) (繼承來源 TypeInfo)
GetMember(String, MemberTypes, BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetMember(String, MemberTypes, BindingFlags) (繼承來源 TypeInfo)
GetMembers()

傳回目前 Type 的所有公用成員。Returns all the public members of the current Type.

(繼承來源 Type)
GetMembers() (繼承來源 TypeInfo)
GetMembers(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetMembers(BindingFlags) (繼承來源 TypeInfo)
GetMethod(String)

搜尋具有指定名稱的公用方法。Searches for the public method with the specified name.

(繼承來源 Type)
GetMethod(String) (繼承來源 TypeInfo)
GetMethod(String, BindingFlags)

使用指定的繫結條件約束搜尋指定的方法。Searches for the specified method, using the specified binding constraints.

(繼承來源 Type)
GetMethod(String, BindingFlags) (繼承來源 TypeInfo)
GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

使用指定的繫結條件約束和指定的呼叫慣例,來搜尋指定的方法,而該方法的參數符合指定的引數類型和修飾詞。Searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

使用指定的繫結條件約束搜尋指定的方法,而該方法的參數符合指定的引數類型和修飾詞。Searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(繼承來源 Type)
GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

使用指定的繫結限制式和指定的呼叫慣例來搜尋指定的方法,其參數符合指定的泛型參數計數、引數型別及修飾元。Searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[])

使用指定的繫結限制式來搜尋指定的方法,其參數符合指定的泛型參數計數、引數型別及修飾元。Searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints.

(繼承來源 Type)
GetMethod(String, Int32, Type[])

搜尋指定的公用方法,其參數符合指定的泛型參數計數和引數型別。Searches for the specified public method whose parameters match the specified generic parameter count and argument types.

(繼承來源 Type)
GetMethod(String, Int32, Type[], ParameterModifier[])

搜尋指定的公用方法,其參數符合指定的泛型參數計數、引數型別及修飾元。Searches for the specified public method whose parameters match the specified generic parameter count, argument types and modifiers.

(繼承來源 Type)
GetMethod(String, Type[])

搜尋指定的公用方法,其參數符合指定的引數類型。Searches for the specified public method whose parameters match the specified argument types.

(繼承來源 Type)
GetMethod(String, Type[]) (繼承來源 TypeInfo)
GetMethod(String, Type[], ParameterModifier[])

搜尋指定的公用方法,其參數符合指定的引數類型和修飾詞。Searches for the specified public method whose parameters match the specified argument types and modifiers.

(繼承來源 Type)
GetMethod(String, Type[], ParameterModifier[]) (繼承來源 TypeInfo)
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

在衍生類別中覆寫時,使用指定的繫結條件約束和指定的呼叫慣例搜尋指定的方法,而該方法的參數符合指定的引數類型和修飾詞。When overridden in a derived class, searches for the specified method whose parameters match the specified argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

在衍生類別中覆寫時,使用指定的繫結限制式和指定的呼叫慣例來搜尋指定的方法,其參數符合指定的泛型參數計數、引數型別及修飾元。When overridden in a derived class, searches for the specified method whose parameters match the specified generic parameter count, argument types and modifiers, using the specified binding constraints and the specified calling convention.

(繼承來源 Type)
GetMethods()

傳回目前 Type 的所有公用方法。Returns all the public methods of the current Type.

(繼承來源 Type)
GetMethods() (繼承來源 TypeInfo)
GetMethods(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetMethods(BindingFlags) (繼承來源 TypeInfo)
GetNestedType(String)

搜尋具有指定名稱的公用巢狀類型。Searches for the public nested type with the specified name.

(繼承來源 Type)
GetNestedType(String) (繼承來源 TypeInfo)
GetNestedType(String, BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetNestedType(String, BindingFlags) (繼承來源 TypeInfo)
GetNestedTypes()

傳回在目前 Type 內形成巢狀的公用類型。Returns the public types nested in the current Type.

(繼承來源 Type)
GetNestedTypes() (繼承來源 TypeInfo)
GetNestedTypes(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetNestedTypes(BindingFlags) (繼承來源 TypeInfo)
GetProperties()

傳回目前 Type 的所有公用屬性。Returns all the public properties of the current Type.

(繼承來源 Type)
GetProperties() (繼承來源 TypeInfo)
GetProperties(BindingFlags)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

GetProperties(BindingFlags) (繼承來源 TypeInfo)
GetProperty(String)

搜尋具有指定名稱的公用屬性。Searches for the public property with the specified name.

(繼承來源 Type)
GetProperty(String) (繼承來源 TypeInfo)
GetProperty(String, BindingFlags)

使用指定的繫結條件約束搜尋指定的屬性。Searches for the specified property, using the specified binding constraints.

(繼承來源 Type)
GetProperty(String, BindingFlags) (繼承來源 TypeInfo)
GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

使用指定的繫結條件約束搜尋指定的屬性,而該屬性的參數符合指定的引數類型和修飾詞。Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(繼承來源 Type)
GetProperty(String, Type)

搜尋具有指定名稱和傳回類型的公用屬性。Searches for the public property with the specified name and return type.

(繼承來源 Type)
GetProperty(String, Type) (繼承來源 TypeInfo)
GetProperty(String, Type, Type[])

搜尋指定的公用屬性,其參數符合指定的引數類型。Searches for the specified public property whose parameters match the specified argument types.

(繼承來源 Type)
GetProperty(String, Type, Type[]) (繼承來源 TypeInfo)
GetProperty(String, Type, Type[], ParameterModifier[])

搜尋指定的公用屬性,其參數符合指定的引數類型和修飾詞。Searches for the specified public property whose parameters match the specified argument types and modifiers.

(繼承來源 Type)
GetProperty(String, Type, Type[], ParameterModifier[]) (繼承來源 TypeInfo)
GetProperty(String, Type[])

搜尋指定的公用屬性,其參數符合指定的引數類型。Searches for the specified public property whose parameters match the specified argument types.

(繼承來源 Type)
GetProperty(String, Type[]) (繼承來源 TypeInfo)
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

在衍生類別中覆寫時,使用指定的繫結條件約束搜尋指定的屬性,而該屬性的參數符合指定的引數類型和修飾詞的建構函式。When overridden in a derived class, searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

(繼承來源 Type)
GetType()

取得目前的 TypeGets the current Type.

(繼承來源 Type)
GetType()

探索成員的屬性並提供成員中繼資料的存取。Discovers the attributes of a member and provides access to member metadata.

(繼承來源 MemberInfo)
GetTypeCodeImpl()

傳回此 Type 執行個體的基礎型別碼。Returns the underlying type code of this Type instance.

(繼承來源 Type)
HasElementTypeImpl()
HasElementTypeImpl()

在衍生類別中覆寫時,實作 HasElementType 屬性並判斷目前 Type 是否內含或參考其他類型;也就是說,目前 Type 是否為陣列、指標或以傳址方式傳遞。When overridden in a derived class, implements the HasElementType property and determines whether the current Type encompasses or refers to another type; that is, whether the current Type is an array, a pointer, or is passed by reference.

(繼承來源 Type)
HasSameMetadataDefinitionAs(MemberInfo) (繼承來源 MemberInfo)
InvokeMember(String, BindingFlags, Binder, Object, Object[])

使用指定的繫結條件約束並符合指定的引數清單,來叫用指定的成員。Invokes the specified member, using the specified binding constraints and matching the specified argument list.

(繼承來源 Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

使用指定的繫結條件約束並符合指定的引數清單和文化特性 (Culture) 來叫用指定的成員。Invokes the specified member, using the specified binding constraints and matching the specified argument list and culture.

(繼承來源 Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

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

在衍生類別中覆寫時,使用指定的繫結條件約束並符合指定的引數清單、修飾詞和文化特性,來叫用指定的成員。When overridden in a derived class, invokes the specified member, using the specified binding constraints and matching the specified argument list, modifiers and culture.

(繼承來源 Type)
IsArrayImpl()
IsArrayImpl()

在衍生類別中覆寫時,實作 IsArray 屬性並判斷 Type 是否為陣列。When overridden in a derived class, implements the IsArray property and determines whether the Type is an array.

(繼承來源 Type)
IsAssignableFrom(Type)

在所有情況下都會擲回 NotSupportedException 例外狀況。Throws a NotSupportedException exception in all cases.

IsAssignableFrom(Type) (繼承來源 TypeInfo)
IsAssignableFrom(TypeInfo)

在所有情況下都會擲回 NotSupportedException 例外狀況。Throws a NotSupportedException exception in all cases.

IsAssignableFrom(TypeInfo)

傳回值,這個值表示指定的類型是否可以指派到目前的類型。Returns a value that indicates whether the specified type can be assigned to the current type.

(繼承來源 TypeInfo)
IsAssignableTo(Type)

判斷現有類型是否可以指派至指定 targetType的變數。Determines whether the current type can be assigned to a variable of the specified targetType.

(繼承來源 Type)
IsByRefImpl()
IsByRefImpl()

在衍生類別中覆寫時,實作 IsByRef 屬性並判斷 Type 是否以傳址方式傳遞。When overridden in a derived class, implements the IsByRef property and determines whether the Type is passed by reference.

(繼承來源 Type)
IsCOMObjectImpl()
IsCOMObjectImpl()

在衍生類別中覆寫時,實作 IsCOMObject 屬性並判斷 Type 是否為 COM 物件。When overridden in a derived class, implements the IsCOMObject property and determines whether the Type is a COM object.

(繼承來源 Type)
IsContextfulImpl()

實作 IsContextful 屬性並判斷在內容中是否可以裝載 TypeImplements the IsContextful property and determines whether the Type can be hosted in a context.

(繼承來源 Type)
IsDefined(Type, Boolean)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

IsDefined(Type, Boolean)

在衍生類別中覆寫時,表示是否已有一個或多個具有指定型別或其衍生型別的屬性套用至這個成員。When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member.

(繼承來源 MemberInfo)
IsEnumDefined(Object)

傳回值,這個值表示指定的值是否存在於目前的列舉類型中。Returns a value that indicates whether the specified value exists in the current enumeration type.

(繼承來源 Type)
IsEnumDefined(Object) (繼承來源 TypeInfo)
IsEquivalentTo(Type)

判斷兩個 COM 類型是否具有相同的識別以及是否適合類型等價。Determines whether two COM types have the same identity and are eligible for type equivalence.

(繼承來源 Type)
IsEquivalentTo(Type) (繼承來源 TypeInfo)
IsInstanceOfType(Object)
IsInstanceOfType(Object)

判斷指定的物件是否為目前 Type 的執行個體。Determines whether the specified object is an instance of the current Type.

(繼承來源 Type)
IsInstanceOfType(Object) (繼承來源 TypeInfo)
IsMarshalByRefImpl()

實作 IsMarshalByRef 屬性,判斷 Type 是否以傳址方式封送處理。Implements the IsMarshalByRef property and determines whether the Type is marshaled by reference.

(繼承來源 Type)
IsPointerImpl()
IsPointerImpl()

在衍生類別中覆寫時,實作 IsPointer 屬性並判斷 Type 是否為指標。When overridden in a derived class, implements the IsPointer property and determines whether the Type is a pointer.

(繼承來源 Type)
IsPrimitiveImpl()
IsPrimitiveImpl()

在衍生類別中覆寫時,實作 IsPrimitive 屬性並判斷 Type 是否為其中一個基本類型。When overridden in a derived class, implements the IsPrimitive property and determines whether the Type is one of the primitive types.

(繼承來源 Type)
IsSubclassOf(Type)

不支援不完整的泛型型別參數。Not supported for incomplete generic type parameters.

IsSubclassOf(Type) (繼承來源 TypeInfo)
IsValueTypeImpl()
IsValueTypeImpl()

實作 IsValueType 屬性並判斷 Type 是否為實值類型;也就是說,不是類別或介面。Implements the IsValueType property and determines whether the Type is a value type; that is, not a class or an interface.

(繼承來源 Type)
MakeArrayType()

傳回一維陣列型別,其元素型別為泛型型別參數。Returns the type of a one-dimensional array whose element type is the generic type parameter.

MakeArrayType() (繼承來源 TypeInfo)
MakeArrayType(Int32)

傳回陣列的類型,其項目類型是以維度數目指定的泛型類型參數。Returns the type of an array whose element type is the generic type parameter, with the specified number of dimensions.

MakeArrayType(Int32) (繼承來源 TypeInfo)
MakeByRefType()

傳回 Type 物件,在做為參考參數傳遞時代表目前的泛型類型參數。Returns a Type object that represents the current generic type parameter when passed as a reference parameter.

MakeByRefType() (繼承來源 TypeInfo)
MakeGenericType(Type[])

不完整的泛型類型參數無效。Not valid for incomplete generic type parameters.

MakeGenericType(Type[]) (繼承來源 TypeInfo)
MakePointerType()

傳回 Type 物件,代表指向目前泛型型別參數的指標。Returns a Type object that represents a pointer to the current generic type parameter.

MakePointerType() (繼承來源 TypeInfo)
MemberwiseClone()

建立目前 Object 的淺層複製。Creates a shallow copy of the current Object.

(繼承來源 Object)
SetBaseTypeConstraint(Type)

設定基底類型必須繼承才能取代成類型參數的類型。Sets the base type that a type must inherit in order to be substituted for the type parameter.

SetCustomAttribute(ConstructorInfo, Byte[])

使用指定的自訂屬性 Blob 來設定自訂屬性。Sets a custom attribute using a specified custom attribute blob.

SetCustomAttribute(CustomAttributeBuilder)

使用自訂屬性產生器來設定自訂屬性。Set a custom attribute using a custom attribute builder.

SetGenericParameterAttributes(GenericParameterAttributes)

設定泛型參數的變異數特性和特殊條件約束,例如無參數建構函式條件約束。Sets the variance characteristics and special constraints of the generic parameter, such as the parameterless constructor constraint.

SetInterfaceConstraints(Type[])

設定類型必須實作才能取代成型別參數的介面。Sets the interfaces a type must implement in order to be substituted for the type parameter.

ToString()

傳回目前泛型類型參數的字串表示。Returns a string representation of the current generic type parameter.

ToString()

傳回表示目前 String 的名稱的 TypeReturns a String representing the name of the current Type.

(繼承來源 Type)

明確介面實作

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

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。Maps a set of names to a corresponding set of dispatch identifiers.

(繼承來源 MemberInfo)
_MemberInfo.GetType()

取得 Type 物件,表示 MemberInfo 類別。Gets a Type object representing the MemberInfo class.

(繼承來源 MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。Retrieves the type information for an object, which can then be used to get the type information for an interface.

(繼承來源 MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(繼承來源 MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。Provides access to properties and methods exposed by an object.

(繼承來源 MemberInfo)
_Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。Maps a set of names to a corresponding set of dispatch identifiers.

(繼承來源 Type)
_Type.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。Retrieves the type information for an object, which can then be used to get the type information for an interface.

(繼承來源 Type)
_Type.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(繼承來源 Type)
_Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。Provides access to properties and methods exposed by an object.

(繼承來源 Type)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

傳回這個成員中定義的所有自訂屬性的陣列 (但具名屬性除外),如果沒有自訂屬性,則傳回空陣列。Returns an array of all of the custom attributes defined on this member, excluding named attributes, or an empty array if there are no custom attributes.

(繼承來源 MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

傳回這個成員中定義的自訂屬性陣列 (依類型識別),如果沒有該類型的自訂屬性,則傳回空陣列。Returns an array of custom attributes defined on this member, identified by type, or an empty array if there are no custom attributes of that type.

(繼承來源 MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

指出此成員上是否有定義一個或多個 attributeType 執行個體。Indicates whether one or more instance of attributeType is defined on this member.

(繼承來源 MemberInfo)
IReflectableType.GetTypeInfo()

TypeInfo 物件形式傳回目前類型的表示。Returns a representation of the current type as a TypeInfo object.

(繼承來源 TypeInfo)

擴充方法

GetCustomAttribute(MemberInfo, Type)

擷取指定型別的自訂屬性,此屬性套用至指定成員。Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute(MemberInfo, Type, Boolean)

擷取只訂型別的自訂屬性,此屬性套用至指定成員,並且可選擇性檢查該成員的祖系。Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttribute<T>(MemberInfo)

擷取指定型別的自訂屬性,此屬性套用至指定成員。Retrieves a custom attribute of a specified type that is applied to a specified member.

GetCustomAttribute<T>(MemberInfo, Boolean)

擷取只訂型別的自訂屬性,此屬性套用至指定成員,並且可選擇性檢查該成員的祖系。Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo)

擷取套用至指定成員的自訂屬性集合。Retrieves a collection of custom attributes that are applied to a specified member.

GetCustomAttributes(MemberInfo, Boolean)

擷取自訂屬性集合,此集合套用至指定成員,並且可選擇性檢查該成員的祖系。Retrieves a collection of custom attributes that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes(MemberInfo, Type)

擷取指定型別的自訂屬性集合,此集合套用至指定成員。Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes(MemberInfo, Type, Boolean)

擷取指定型別的自訂屬性集合,此集合套用至指定成員,並且可選擇性檢查該成員的祖系。Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

GetCustomAttributes<T>(MemberInfo)

擷取指定型別的自訂屬性集合,此集合套用至指定成員。Retrieves a collection of custom attributes of a specified type that are applied to a specified member.

GetCustomAttributes<T>(MemberInfo, Boolean)

擷取指定型別的自訂屬性集合,此集合套用至指定成員,並且可選擇性檢查該成員的祖系。Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member.

IsDefined(MemberInfo, Type)

指出是否將所指定型別的自訂屬性套用至指定的成員。Indicates whether custom attributes of a specified type are applied to a specified member.

IsDefined(MemberInfo, Type, Boolean)

指出指定之型別的自訂屬性是否會套用至指定的成員,以及選擇性地套用到其上階。Indicates whether custom attributes of a specified type are applied to a specified member, and, optionally, applied to its ancestors.

GetTypeInfo(Type)

傳回指定之型別的 TypeInfo 表示。Returns the TypeInfo representation of the specified type.

GetMetadataToken(MemberInfo)

取得指定成員的中繼資料語彙基元 (如果有)。Gets a metadata token for the given member, if available.

HasMetadataToken(MemberInfo)

傳回值,指出所指定成員是否有可用的中繼資料語彙基元。Returns a value that indicates whether a metadata token is available for the specified member.

GetRuntimeEvent(Type, String)

擷取表示指定之事件的物件。Retrieves an object that represents the specified event.

GetRuntimeEvents(Type)

擷取集合,表示指定的型別所定義的所有事件。Retrieves a collection that represents all the events defined on a specified type.

GetRuntimeField(Type, String)

擷取表示指定之欄位的物件。Retrieves an object that represents a specified field.

GetRuntimeFields(Type)

擷取集合,表示指定的型別所定義的所有欄位。Retrieves a collection that represents all the fields defined on a specified type.

GetRuntimeInterfaceMap(TypeInfo, Type)

傳回指定型別和指定介面的介面對應。Returns an interface mapping for the specified type and the specified interface.

GetRuntimeMethod(Type, String, Type[])

擷取表示指定之方法的物件。Retrieves an object that represents a specified method.

GetRuntimeMethods(Type)

擷取集合,表示指定的型別所定義的所有方法。Retrieves a collection that represents all methods defined on a specified type.

GetRuntimeProperties(Type)

擷取集合,表示指定的型別所定義的所有屬性。Retrieves a collection that represents all the properties defined on a specified type.

GetRuntimeProperty(Type, String)

擷取表示指定之屬性的物件。Retrieves an object that represents a specified property.

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

適用於

另請參閱