TypeBuilder Classe

Définition

Définit et crée des instances de classes pendant l’exécution.

public ref class TypeBuilder sealed : Type
public ref class TypeBuilder sealed : System::Reflection::TypeInfo
public ref class TypeBuilder sealed : Type, System::Runtime::InteropServices::_TypeBuilder
public ref class TypeBuilder sealed : System::Reflection::TypeInfo, System::Runtime::InteropServices::_TypeBuilder
public ref class TypeBuilder abstract : System::Reflection::TypeInfo
public sealed class TypeBuilder : Type
public sealed class TypeBuilder : System.Reflection.TypeInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : System.Reflection.TypeInfo, System.Runtime.InteropServices._TypeBuilder
public abstract class TypeBuilder : System.Reflection.TypeInfo
type TypeBuilder = class
    inherit Type
type TypeBuilder = class
    inherit TypeInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type TypeBuilder = class
    inherit Type
    interface _TypeBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeBuilder = class
    inherit Type
    interface _TypeBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeBuilder = class
    inherit TypeInfo
    interface _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits Type
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Public NotInheritable Class TypeBuilder
Inherits Type
Implements _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Implements _TypeBuilder
Public MustInherit Class TypeBuilder
Inherits TypeInfo
Héritage
TypeBuilder
Héritage
TypeBuilder
Héritage
Attributs
Implémente

Exemples

Cette section contient deux exemples de code. Le premier exemple montre comment créer un type dynamique avec un champ, un constructeur, une propriété et une méthode. Le deuxième exemple crée une méthode dynamiquement à partir d’une entrée d’utilisateur.

Premier exemple

L’exemple de code suivant montre comment définir un assembly dynamique avec un seul module. Le module dans l’exemple d’assembly contient un type, MyDynamicType , qui a un champ privé, une propriété qui obtient et définit le champ privé, les constructeurs qui initialisent le champ privé et une méthode qui multiplie un nombre fourni par l’utilisateur par la valeur de champ privée et retourne le résultat.

Le AssemblyBuilderAccess.RunAndSave champ est spécifié lors de la création de l’assembly. Le code assembleur est utilisé immédiatement, et l’assembly est également enregistré sur le disque afin de pouvoir être examiné avec Ildasm.exe (Désassembleur il) ou utilisé dans un autre programme.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;

void main()
{
    // An assembly consists of one or more modules, each of which
    // contains zero or more types. This code creates a single-module
    // assembly, the most common case. The module contains one type,
    // named "MyDynamicType", that has a private field, a property 
    // that gets and sets the private field, constructors that 
    // initialize the private field, and a method that multiplies 
    // a user-supplied number by the private field value and returns
    // the result. In Visual C++ the type might look like this:
    /*
      public ref class MyDynamicType
      {
      private:
          int m_number;

      public:
          MyDynamicType() : m_number(42) {};
          MyDynamicType(int initNumber) : m_number(initNumber) {};
      
          property int Number
          {
              int get() { return m_number; }
              void set(int value) { m_number = value; }
          }

          int MyMethod(int multiplier)
          {
              return m_number * multiplier;
          }
      };
    */
      
    AssemblyName^ aName = gcnew AssemblyName("DynamicAssemblyExample");
    AssemblyBuilder^ ab = 
        AppDomain::CurrentDomain->DefineDynamicAssembly(
            aName, 
            AssemblyBuilderAccess::RunAndSave);

    // For a single-module assembly, the module name is usually
    // the assembly name plus an extension.
    ModuleBuilder^ mb = 
        ab->DefineDynamicModule(aName->Name, aName->Name + ".dll");
      
    TypeBuilder^ tb = mb->DefineType(
        "MyDynamicType", 
         TypeAttributes::Public);

    // Add a private field of type int (Int32).
    FieldBuilder^ fbNumber = tb->DefineField(
        "m_number", 
        int::typeid, 
        FieldAttributes::Private);

    // Define a constructor that takes an integer argument and 
    // stores it in the private field. 
    array<Type^>^ parameterTypes = { int::typeid };
    ConstructorBuilder^ ctor1 = tb->DefineConstructor(
        MethodAttributes::Public, 
        CallingConventions::Standard, 
        parameterTypes);

    ILGenerator^ ctor1IL = ctor1->GetILGenerator();
    // For a constructor, argument zero is a reference to the new
    // instance. Push it on the stack before calling the base
    // class constructor. Specify the default constructor of the 
    // base class (System::Object) by passing an empty array of 
    // types (Type::EmptyTypes) to GetConstructor.
    ctor1IL->Emit(OpCodes::Ldarg_0);
    ctor1IL->Emit(OpCodes::Call, 
        Object::typeid->GetConstructor(Type::EmptyTypes));
    // Push the instance on the stack before pushing the argument
    // that is to be assigned to the private field m_number.
    ctor1IL->Emit(OpCodes::Ldarg_0);
    ctor1IL->Emit(OpCodes::Ldarg_1);
    ctor1IL->Emit(OpCodes::Stfld, fbNumber);
    ctor1IL->Emit(OpCodes::Ret);

    // Define a default constructor that supplies a default value
    // for the private field. For parameter types, pass the empty
    // array of types or pass nullptr.
    ConstructorBuilder^ ctor0 = tb->DefineConstructor(
        MethodAttributes::Public, 
        CallingConventions::Standard, 
        Type::EmptyTypes);

    ILGenerator^ ctor0IL = ctor0->GetILGenerator();
    ctor0IL->Emit(OpCodes::Ldarg_0);
    ctor0IL->Emit(OpCodes::Call, 
        Object::typeid->GetConstructor(Type::EmptyTypes));
    // For a constructor, argument zero is a reference to the new
    // instance. Push it on the stack before pushing the default
    // value on the stack.
    ctor0IL->Emit(OpCodes::Ldarg_0);
    ctor0IL->Emit(OpCodes::Ldc_I4_S, 42);
    ctor0IL->Emit(OpCodes::Stfld, fbNumber);
    ctor0IL->Emit(OpCodes::Ret);

    // Define a property named Number that gets and sets the private 
    // field.
    //
    // The last argument of DefineProperty is nullptr, because the
    // property has no parameters. (If you don't specify nullptr, you must
    // specify an array of Type objects. For a parameterless property,
    // use the built-in array with no elements: Type::EmptyTypes)
    PropertyBuilder^ pbNumber = tb->DefineProperty(
        "Number", 
        PropertyAttributes::HasDefault, 
        int::typeid, 
        nullptr);
      
    // The property "set" and property "get" methods require a special
    // set of attributes.
    MethodAttributes getSetAttr = MethodAttributes::Public | 
        MethodAttributes::SpecialName | MethodAttributes::HideBySig;

    // Define the "get" accessor method for Number. The method returns
    // an integer and has no arguments. (Note that nullptr could be 
    // used instead of Types::EmptyTypes)
    MethodBuilder^ mbNumberGetAccessor = tb->DefineMethod(
        "get_Number", 
        getSetAttr, 
        int::typeid, 
        Type::EmptyTypes);
      
    ILGenerator^ numberGetIL = mbNumberGetAccessor->GetILGenerator();
    // For an instance property, argument zero is the instance. Load the 
    // instance, then load the private field and return, leaving the
    // field value on the stack.
    numberGetIL->Emit(OpCodes::Ldarg_0);
    numberGetIL->Emit(OpCodes::Ldfld, fbNumber);
    numberGetIL->Emit(OpCodes::Ret);
    
    // Define the "set" accessor method for Number, which has no return
    // type and takes one argument of type int (Int32).
    MethodBuilder^ mbNumberSetAccessor = tb->DefineMethod(
        "set_Number", 
        getSetAttr, 
        nullptr, 
        gcnew array<Type^> { int::typeid });
      
    ILGenerator^ numberSetIL = mbNumberSetAccessor->GetILGenerator();
    // Load the instance and then the numeric argument, then store the
    // argument in the field.
    numberSetIL->Emit(OpCodes::Ldarg_0);
    numberSetIL->Emit(OpCodes::Ldarg_1);
    numberSetIL->Emit(OpCodes::Stfld, fbNumber);
    numberSetIL->Emit(OpCodes::Ret);
      
    // Last, map the "get" and "set" accessor methods to the 
    // PropertyBuilder. The property is now complete. 
    pbNumber->SetGetMethod(mbNumberGetAccessor);
    pbNumber->SetSetMethod(mbNumberSetAccessor);

    // Define a method that accepts an integer argument and returns
    // the product of that integer and the private field m_number. This
    // time, the array of parameter types is created on the fly.
    MethodBuilder^ meth = tb->DefineMethod(
        "MyMethod", 
        MethodAttributes::Public, 
        int::typeid, 
        gcnew array<Type^> { int::typeid });

    ILGenerator^ methIL = meth->GetILGenerator();
    // To retrieve the private instance field, load the instance it
    // belongs to (argument zero). After loading the field, load the 
    // argument one and then multiply. Return from the method with 
    // the return value (the product of the two numbers) on the 
    // execution stack.
    methIL->Emit(OpCodes::Ldarg_0);
    methIL->Emit(OpCodes::Ldfld, fbNumber);
    methIL->Emit(OpCodes::Ldarg_1);
    methIL->Emit(OpCodes::Mul);
    methIL->Emit(OpCodes::Ret);

    // Finish the type->
    Type^ t = tb->CreateType();
     
    // The following line saves the single-module assembly. This
    // requires AssemblyBuilderAccess to include Save. You can now
    // type "ildasm MyDynamicAsm.dll" at the command prompt, and 
    // examine the assembly. You can also write a program that has
    // a reference to the assembly, and use the MyDynamicType type.
    // 
    ab->Save(aName->Name + ".dll");

    // Because AssemblyBuilderAccess includes Run, the code can be
    // executed immediately. Start by getting reflection objects for
    // the method and the property.
    MethodInfo^ mi = t->GetMethod("MyMethod");
    PropertyInfo^ pi = t->GetProperty("Number");
  
    // Create an instance of MyDynamicType using the default 
    // constructor. 
    Object^ o1 = Activator::CreateInstance(t);

    // Display the value of the property, then change it to 127 and 
    // display it again. Use nullptr to indicate that the property
    // has no index.
    Console::WriteLine("o1->Number: {0}", pi->GetValue(o1, nullptr));
    pi->SetValue(o1, 127, nullptr);
    Console::WriteLine("o1->Number: {0}", pi->GetValue(o1, nullptr));

    // Call MyMethod, passing 22, and display the return value, 22
    // times 127. Arguments must be passed as an array, even when
    // there is only one.
    array<Object^>^ arguments = { 22 };
    Console::WriteLine("o1->MyMethod(22): {0}", 
        mi->Invoke(o1, arguments));

    // Create an instance of MyDynamicType using the constructor
    // that specifies m_Number. The constructor is identified by
    // matching the types in the argument array. In this case, 
    // the argument array is created on the fly. Display the 
    // property value.
    Object^ o2 = Activator::CreateInstance(t, 
        gcnew array<Object^> { 5280 });
    Console::WriteLine("o2->Number: {0}", pi->GetValue(o2, nullptr));
};

/* This code produces the following output:

o1->Number: 42
o1->Number: 127
o1->MyMethod(22): 2794
o2->Number: 5280
 */
using System;
using System.Reflection;
using System.Reflection.Emit;

class DemoAssemblyBuilder
{
    public static void Main()
    {
        // An assembly consists of one or more modules, each of which
        // contains zero or more types. This code creates a single-module
        // assembly, the most common case. The module contains one type,
        // named "MyDynamicType", that has a private field, a property
        // that gets and sets the private field, constructors that
        // initialize the private field, and a method that multiplies
        // a user-supplied number by the private field value and returns
        // the result. In C# the type might look like this:
        /*
        public class MyDynamicType
        {
            private int m_number;

            public MyDynamicType() : this(42) {}
            public MyDynamicType(int initNumber)
            {
                m_number = initNumber;
            }

            public int Number
            {
                get { return m_number; }
                set { m_number = value; }
            }

            public int MyMethod(int multiplier)
            {
                return m_number * multiplier;
            }
        }
        */

        AssemblyName aName = new AssemblyName("DynamicAssemblyExample");
        AssemblyBuilder ab =
            AppDomain.CurrentDomain.DefineDynamicAssembly(
                aName,
                AssemblyBuilderAccess.RunAndSave);

        // For a single-module assembly, the module name is usually
        // the assembly name plus an extension.
        ModuleBuilder mb =
            ab.DefineDynamicModule(aName.Name, aName.Name + ".dll");

        TypeBuilder tb = mb.DefineType(
            "MyDynamicType",
             TypeAttributes.Public);

        // Add a private field of type int (Int32).
        FieldBuilder fbNumber = tb.DefineField(
            "m_number",
            typeof(int),
            FieldAttributes.Private);

        // Define a constructor that takes an integer argument and
        // stores it in the private field.
        Type[] parameterTypes = { typeof(int) };
        ConstructorBuilder ctor1 = tb.DefineConstructor(
            MethodAttributes.Public,
            CallingConventions.Standard,
            parameterTypes);

        ILGenerator ctor1IL = ctor1.GetILGenerator();
        // For a constructor, argument zero is a reference to the new
        // instance. Push it on the stack before calling the base
        // class constructor. Specify the default constructor of the
        // base class (System.Object) by passing an empty array of
        // types (Type.EmptyTypes) to GetConstructor.
        ctor1IL.Emit(OpCodes.Ldarg_0);
        ctor1IL.Emit(OpCodes.Call,
            typeof(object).GetConstructor(Type.EmptyTypes));
        // Push the instance on the stack before pushing the argument
        // that is to be assigned to the private field m_number.
        ctor1IL.Emit(OpCodes.Ldarg_0);
        ctor1IL.Emit(OpCodes.Ldarg_1);
        ctor1IL.Emit(OpCodes.Stfld, fbNumber);
        ctor1IL.Emit(OpCodes.Ret);

        // Define a default constructor that supplies a default value
        // for the private field. For parameter types, pass the empty
        // array of types or pass null.
        ConstructorBuilder ctor0 = tb.DefineConstructor(
            MethodAttributes.Public,
            CallingConventions.Standard,
            Type.EmptyTypes);

        ILGenerator ctor0IL = ctor0.GetILGenerator();
        // For a constructor, argument zero is a reference to the new
        // instance. Push it on the stack before pushing the default
        // value on the stack, then call constructor ctor1.
        ctor0IL.Emit(OpCodes.Ldarg_0);
        ctor0IL.Emit(OpCodes.Ldc_I4_S, 42);
        ctor0IL.Emit(OpCodes.Call, ctor1);
        ctor0IL.Emit(OpCodes.Ret);

        // Define a property named Number that gets and sets the private
        // field.
        //
        // The last argument of DefineProperty is null, because the
        // property has no parameters. (If you don't specify null, you must
        // specify an array of Type objects. For a parameterless property,
        // use the built-in array with no elements: Type.EmptyTypes)
        PropertyBuilder pbNumber = tb.DefineProperty(
            "Number",
            PropertyAttributes.HasDefault,
            typeof(int),
            null);

        // The property "set" and property "get" methods require a special
        // set of attributes.
        MethodAttributes getSetAttr = MethodAttributes.Public |
            MethodAttributes.SpecialName | MethodAttributes.HideBySig;

        // Define the "get" accessor method for Number. The method returns
        // an integer and has no arguments. (Note that null could be
        // used instead of Types.EmptyTypes)
        MethodBuilder mbNumberGetAccessor = tb.DefineMethod(
            "get_Number",
            getSetAttr,
            typeof(int),
            Type.EmptyTypes);

        ILGenerator numberGetIL = mbNumberGetAccessor.GetILGenerator();
        // For an instance property, argument zero is the instance. Load the
        // instance, then load the private field and return, leaving the
        // field value on the stack.
        numberGetIL.Emit(OpCodes.Ldarg_0);
        numberGetIL.Emit(OpCodes.Ldfld, fbNumber);
        numberGetIL.Emit(OpCodes.Ret);

        // Define the "set" accessor method for Number, which has no return
        // type and takes one argument of type int (Int32).
        MethodBuilder mbNumberSetAccessor = tb.DefineMethod(
            "set_Number",
            getSetAttr,
            null,
            new Type[] { typeof(int) });

        ILGenerator numberSetIL = mbNumberSetAccessor.GetILGenerator();
        // Load the instance and then the numeric argument, then store the
        // argument in the field.
        numberSetIL.Emit(OpCodes.Ldarg_0);
        numberSetIL.Emit(OpCodes.Ldarg_1);
        numberSetIL.Emit(OpCodes.Stfld, fbNumber);
        numberSetIL.Emit(OpCodes.Ret);

        // Last, map the "get" and "set" accessor methods to the
        // PropertyBuilder. The property is now complete.
        pbNumber.SetGetMethod(mbNumberGetAccessor);
        pbNumber.SetSetMethod(mbNumberSetAccessor);

        // Define a method that accepts an integer argument and returns
        // the product of that integer and the private field m_number. This
        // time, the array of parameter types is created on the fly.
        MethodBuilder meth = tb.DefineMethod(
            "MyMethod",
            MethodAttributes.Public,
            typeof(int),
            new Type[] { typeof(int) });

        ILGenerator methIL = meth.GetILGenerator();
        // To retrieve the private instance field, load the instance it
        // belongs to (argument zero). After loading the field, load the
        // argument one and then multiply. Return from the method with
        // the return value (the product of the two numbers) on the
        // execution stack.
        methIL.Emit(OpCodes.Ldarg_0);
        methIL.Emit(OpCodes.Ldfld, fbNumber);
        methIL.Emit(OpCodes.Ldarg_1);
        methIL.Emit(OpCodes.Mul);
        methIL.Emit(OpCodes.Ret);

        // Finish the type.
        Type t = tb.CreateType();

        // The following line saves the single-module assembly. This
        // requires AssemblyBuilderAccess to include Save. You can now
        // type "ildasm MyDynamicAsm.dll" at the command prompt, and
        // examine the assembly. You can also write a program that has
        // a reference to the assembly, and use the MyDynamicType type.
        //
        ab.Save(aName.Name + ".dll");

        // Because AssemblyBuilderAccess includes Run, the code can be
        // executed immediately. Start by getting reflection objects for
        // the method and the property.
        MethodInfo mi = t.GetMethod("MyMethod");
        PropertyInfo pi = t.GetProperty("Number");

        // Create an instance of MyDynamicType using the default
        // constructor.
        object o1 = Activator.CreateInstance(t);

        // Display the value of the property, then change it to 127 and
        // display it again. Use null to indicate that the property
        // has no index.
        Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, null));
        pi.SetValue(o1, 127, null);
        Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, null));

        // Call MyMethod, passing 22, and display the return value, 22
        // times 127. Arguments must be passed as an array, even when
        // there is only one.
        object[] arguments = { 22 };
        Console.WriteLine("o1.MyMethod(22): {0}",
            mi.Invoke(o1, arguments));

        // Create an instance of MyDynamicType using the constructor
        // that specifies m_Number. The constructor is identified by
        // matching the types in the argument array. In this case,
        // the argument array is created on the fly. Display the
        // property value.
        object o2 = Activator.CreateInstance(t,
            new object[] { 5280 });
        Console.WriteLine("o2.Number: {0}", pi.GetValue(o2, null));
    }
}

/* This code produces the following output:

o1.Number: 42
o1.Number: 127
o1.MyMethod(22): 2794
o2.Number: 5280
 */
Imports System.Reflection
Imports System.Reflection.Emit

Class DemoAssemblyBuilder

    Public Shared Sub Main()

        ' An assembly consists of one or more modules, each of which
        ' contains zero or more types. This code creates a single-module
        ' assembly, the most common case. The module contains one type,
        ' named "MyDynamicType", that has a private field, a property 
        ' that gets and sets the private field, constructors that 
        ' initialize the private field, and a method that multiplies
        ' a user-supplied number by the private field value and returns 
        ' the result. The code might look like this in Visual Basic:
        '
        'Public Class MyDynamicType
        '    Private m_number As Integer
        '
        '    Public Sub New()
        '        Me.New(42)
        '    End Sub
        '
        '    Public Sub New(ByVal initNumber As Integer)
        '        m_number = initNumber
        '    End Sub
        '
        '    Public Property Number As Integer
        '        Get
        '            Return m_number
        '        End Get
        '        Set
        '            m_Number = Value
        '        End Set
        '    End Property
        '
        '    Public Function MyMethod(ByVal multiplier As Integer) As Integer
        '        Return m_Number * multiplier
        '    End Function
        'End Class
      
        Dim aName As New AssemblyName("DynamicAssemblyExample")
        Dim ab As AssemblyBuilder = _
            AppDomain.CurrentDomain.DefineDynamicAssembly( _
                aName, _
                AssemblyBuilderAccess.RunAndSave)

        ' For a single-module assembly, the module name is usually
        ' the assembly name plus an extension.
        Dim mb As ModuleBuilder = ab.DefineDynamicModule( _
            aName.Name, _
            aName.Name & ".dll")
      
        Dim tb As TypeBuilder = _
            mb.DefineType("MyDynamicType", TypeAttributes.Public)

        ' Add a private field of type Integer (Int32).
        Dim fbNumber As FieldBuilder = tb.DefineField( _
            "m_number", _
            GetType(Integer), _
            FieldAttributes.Private)

        ' Define a constructor that takes an integer argument and 
        ' stores it in the private field. 
        Dim parameterTypes() As Type = { GetType(Integer) }
        Dim ctor1 As ConstructorBuilder = _
            tb.DefineConstructor( _
                MethodAttributes.Public, _
                CallingConventions.Standard, _
                parameterTypes)

        Dim ctor1IL As ILGenerator = ctor1.GetILGenerator()
        ' For a constructor, argument zero is a reference to the new
        ' instance. Push it on the stack before calling the base
        ' class constructor. Specify the default constructor of the 
        ' base class (System.Object) by passing an empty array of 
        ' types (Type.EmptyTypes) to GetConstructor.
        ctor1IL.Emit(OpCodes.Ldarg_0)
        ctor1IL.Emit(OpCodes.Call, _
            GetType(Object).GetConstructor(Type.EmptyTypes))
        ' Push the instance on the stack before pushing the argument
        ' that is to be assigned to the private field m_number.
        ctor1IL.Emit(OpCodes.Ldarg_0)
        ctor1IL.Emit(OpCodes.Ldarg_1)
        ctor1IL.Emit(OpCodes.Stfld, fbNumber)
        ctor1IL.Emit(OpCodes.Ret)

        ' Define a default constructor that supplies a default value
        ' for the private field. For parameter types, pass the empty
        ' array of types or pass Nothing.
        Dim ctor0 As ConstructorBuilder = tb.DefineConstructor( _
            MethodAttributes.Public, _
            CallingConventions.Standard, _
            Type.EmptyTypes)

        Dim ctor0IL As ILGenerator = ctor0.GetILGenerator()
        ' For a constructor, argument zero is a reference to the new
        ' instance. Push it on the stack before pushing the default
        ' value on the stack, then call constructor ctor1.
        ctor0IL.Emit(OpCodes.Ldarg_0)
        ctor0IL.Emit(OpCodes.Ldc_I4_S, 42)
        ctor0IL.Emit(OpCodes.Call, ctor1)
        ctor0IL.Emit(OpCodes.Ret)

        ' Define a property named Number that gets and sets the private 
        ' field.
        '
        ' The last argument of DefineProperty is Nothing, because the
        ' property has no parameters. (If you don't specify Nothing, you must
        ' specify an array of Type objects. For a parameterless property,
        ' use the built-in array with no elements: Type.EmptyTypes)
        Dim pbNumber As PropertyBuilder = tb.DefineProperty( _
            "Number", _
            PropertyAttributes.HasDefault, _
            GetType(Integer), _
            Nothing)
      
        ' The property Set and property Get methods require a special
        ' set of attributes.
        Dim getSetAttr As MethodAttributes = _
            MethodAttributes.Public Or MethodAttributes.SpecialName _
                Or MethodAttributes.HideBySig

        ' Define the "get" accessor method for Number. The method returns
        ' an integer and has no arguments. (Note that Nothing could be 
        ' used instead of Types.EmptyTypes)
        Dim mbNumberGetAccessor As MethodBuilder = tb.DefineMethod( _
            "get_Number", _
            getSetAttr, _
            GetType(Integer), _
            Type.EmptyTypes)
      
        Dim numberGetIL As ILGenerator = mbNumberGetAccessor.GetILGenerator()
        ' For an instance property, argument zero is the instance. Load the 
        ' instance, then load the private field and return, leaving the
        ' field value on the stack.
        numberGetIL.Emit(OpCodes.Ldarg_0)
        numberGetIL.Emit(OpCodes.Ldfld, fbNumber)
        numberGetIL.Emit(OpCodes.Ret)
        
        ' Define the "set" accessor method for Number, which has no return
        ' type and takes one argument of type Integer (Int32).
        Dim mbNumberSetAccessor As MethodBuilder = _
            tb.DefineMethod( _
                "set_Number", _
                getSetAttr, _
                Nothing, _
                New Type() { GetType(Integer) })
      
        Dim numberSetIL As ILGenerator = mbNumberSetAccessor.GetILGenerator()
        ' Load the instance and then the numeric argument, then store the
        ' argument in the field.
        numberSetIL.Emit(OpCodes.Ldarg_0)
        numberSetIL.Emit(OpCodes.Ldarg_1)
        numberSetIL.Emit(OpCodes.Stfld, fbNumber)
        numberSetIL.Emit(OpCodes.Ret)
      
        ' Last, map the "get" and "set" accessor methods to the 
        ' PropertyBuilder. The property is now complete. 
        pbNumber.SetGetMethod(mbNumberGetAccessor)
        pbNumber.SetSetMethod(mbNumberSetAccessor)

        ' Define a method that accepts an integer argument and returns
        ' the product of that integer and the private field m_number. This
        ' time, the array of parameter types is created on the fly.
        Dim meth As MethodBuilder = tb.DefineMethod( _
            "MyMethod", _
            MethodAttributes.Public, _
            GetType(Integer), _
            New Type() { GetType(Integer) })

        Dim methIL As ILGenerator = meth.GetILGenerator()
        ' To retrieve the private instance field, load the instance it
        ' belongs to (argument zero). After loading the field, load the 
        ' argument one and then multiply. Return from the method with 
        ' the return value (the product of the two numbers) on the 
        ' execution stack.
        methIL.Emit(OpCodes.Ldarg_0)
        methIL.Emit(OpCodes.Ldfld, fbNumber)
        methIL.Emit(OpCodes.Ldarg_1)
        methIL.Emit(OpCodes.Mul)
        methIL.Emit(OpCodes.Ret)

        ' Finish the type.
        Dim t As Type = tb.CreateType()
     
        ' The following line saves the single-module assembly. This
        ' requires AssemblyBuilderAccess to include Save. You can now
        ' type "ildasm MyDynamicAsm.dll" at the command prompt, and 
        ' examine the assembly. You can also write a program that has
        ' a reference to the assembly, and use the MyDynamicType type.
        ' 
        ab.Save(aName.Name & ".dll") 

        ' Because AssemblyBuilderAccess includes Run, the code can be
        ' executed immediately. Start by getting reflection objects for
        ' the method and the property.
        Dim mi As MethodInfo = t.GetMethod("MyMethod")
        Dim pi As PropertyInfo = t.GetProperty("Number")
  
        ' Create an instance of MyDynamicType using the default 
        ' constructor. 
        Dim o1 As Object = Activator.CreateInstance(t)

        ' Display the value of the property, then change it to 127 and 
        ' display it again. Use Nothing to indicate that the property
        ' has no index.
        Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, Nothing))
        pi.SetValue(o1, 127, Nothing)
        Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, Nothing))

        ' Call MyMethod, passing 22, and display the return value, 22
        ' times 127. Arguments must be passed as an array, even when
        ' there is only one.
        Dim arguments() As Object = { 22 }
        Console.WriteLine("o1.MyMethod(22): {0}", _
            mi.Invoke(o1, arguments))

        ' Create an instance of MyDynamicType using the constructor
        ' that specifies m_Number. The constructor is identified by
        ' matching the types in the argument array. In this case, 
        ' the argument array is created on the fly. Display the 
        ' property value.
        Dim o2 As Object = Activator.CreateInstance(t, _
            New Object() { 5280 })
        Console.WriteLine("o2.Number: {0}", pi.GetValue(o2, Nothing))
      
    End Sub  
End Class

' This code produces the following output:
'
'o1.Number: 42
'o1.Number: 127
'o1.MyMethod(22): 2794
'o2.Number: 5280

Deuxième exemple

L’exemple de code suivant montre comment générer un type dynamique à l’aide de TypeBuilder .

using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
Type^ DynamicDotProductGen()
{
   Type^ ivType = nullptr;
   array<Type^>^temp0 = {int::typeid,int::typeid,int::typeid};
   array<Type^>^ctorParams = temp0;
   AppDomain^ myDomain = Thread::GetDomain();
   AssemblyName^ myAsmName = gcnew AssemblyName;
   myAsmName->Name = "IntVectorAsm";
   AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess::RunAndSave );
   ModuleBuilder^ IntVectorModule = myAsmBuilder->DefineDynamicModule( "IntVectorModule", "Vector.dll" );
   TypeBuilder^ ivTypeBld = IntVectorModule->DefineType( "IntVector", TypeAttributes::Public );
   FieldBuilder^ xField = ivTypeBld->DefineField( "x", int::typeid, FieldAttributes::Private );
   FieldBuilder^ yField = ivTypeBld->DefineField( "y", int::typeid, FieldAttributes::Private );
   FieldBuilder^ zField = ivTypeBld->DefineField( "z", int::typeid, FieldAttributes::Private );
   Type^ objType = Type::GetType( "System.Object" );
   ConstructorInfo^ objCtor = objType->GetConstructor( gcnew array<Type^>(0) );
   ConstructorBuilder^ ivCtor = ivTypeBld->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, ctorParams );
   ILGenerator^ ctorIL = ivCtor->GetILGenerator();
   ctorIL->Emit( OpCodes::Ldarg_0 );
   ctorIL->Emit( OpCodes::Call, objCtor );
   ctorIL->Emit( OpCodes::Ldarg_0 );
   ctorIL->Emit( OpCodes::Ldarg_1 );
   ctorIL->Emit( OpCodes::Stfld, xField );
   ctorIL->Emit( OpCodes::Ldarg_0 );
   ctorIL->Emit( OpCodes::Ldarg_2 );
   ctorIL->Emit( OpCodes::Stfld, yField );
   ctorIL->Emit( OpCodes::Ldarg_0 );
   ctorIL->Emit( OpCodes::Ldarg_3 );
   ctorIL->Emit( OpCodes::Stfld, zField );
   ctorIL->Emit( OpCodes::Ret );
   
   // This method will find the dot product of the stored vector
   // with another.
   array<Type^>^temp1 = {ivTypeBld};
   array<Type^>^dpParams = temp1;
   
   // Here, you create a MethodBuilder containing the
   // name, the attributes (public, static, private, and so on),
   // the return type (int, in this case), and a array of Type
   // indicating the type of each parameter. Since the sole parameter
   // is a IntVector, the very class you're creating, you will
   // pass in the TypeBuilder (which is derived from Type) instead of
   // a Type object for IntVector, avoiding an exception.
   // -- This method would be declared in C# as:
   //    public int DotProduct(IntVector aVector)
   MethodBuilder^ dotProductMthd = ivTypeBld->DefineMethod( "DotProduct", MethodAttributes::Public, int::typeid, dpParams );
   
   // A ILGenerator can now be spawned, attached to the MethodBuilder.
   ILGenerator^ mthdIL = dotProductMthd->GetILGenerator();
   
   // Here's the body of our function, in MSIL form. We're going to find the
   // "dot product" of the current vector instance with the passed vector
   // instance. For reference purposes, the equation is:
   // (x1 * x2) + (y1 * y2) + (z1 * z2) = the dot product
   // First, you'll load the reference to the current instance "this"
   // stored in argument 0 (ldarg.0) onto the stack. Ldfld, the subsequent
   // instruction, will pop the reference off the stack and look up the
   // field "x", specified by the FieldInfo token "xField".
   mthdIL->Emit( OpCodes::Ldarg_0 );
   mthdIL->Emit( OpCodes::Ldfld, xField );
   
   // That completed, the value stored at field "x" is now atop the stack.
   // Now, you'll do the same for the Object reference we passed as a
   // parameter, stored in argument 1 (ldarg.1). After Ldfld executed,
   // you'll have the value stored in field "x" for the passed instance
   // atop the stack.
   mthdIL->Emit( OpCodes::Ldarg_1 );
   mthdIL->Emit( OpCodes::Ldfld, xField );
   
   // There will now be two values atop the stack - the "x" value for the
   // current vector instance, and the "x" value for the passed instance.
   // You'll now multiply them, and push the result onto the evaluation stack.
   mthdIL->Emit( OpCodes::Mul_Ovf_Un );
   
   // Now, repeat this for the "y" fields of both vectors.
   mthdIL->Emit( OpCodes::Ldarg_0 );
   mthdIL->Emit( OpCodes::Ldfld, yField );
   mthdIL->Emit( OpCodes::Ldarg_1 );
   mthdIL->Emit( OpCodes::Ldfld, yField );
   mthdIL->Emit( OpCodes::Mul_Ovf_Un );
   
   // At this time, the results of both multiplications should be atop
   // the stack. You'll now add them and push the result onto the stack.
   mthdIL->Emit( OpCodes::Add_Ovf_Un );
   
   // Multiply both "z" field and push the result onto the stack.
   mthdIL->Emit( OpCodes::Ldarg_0 );
   mthdIL->Emit( OpCodes::Ldfld, zField );
   mthdIL->Emit( OpCodes::Ldarg_1 );
   mthdIL->Emit( OpCodes::Ldfld, zField );
   mthdIL->Emit( OpCodes::Mul_Ovf_Un );
   
   // Finally, add the result of multiplying the "z" fields with the
   // result of the earlier addition, and push the result - the dot product -
   // onto the stack.
   mthdIL->Emit( OpCodes::Add_Ovf_Un );
   
   // The "ret" opcode will pop the last value from the stack and return it
   // to the calling method. You're all done!
   mthdIL->Emit( OpCodes::Ret );
   ivType = ivTypeBld->CreateType();
   return ivType;
}

int main()
{
   Type^ IVType = nullptr;
   Object^ aVector1 = nullptr;
   Object^ aVector2 = nullptr;
   array<Type^>^temp2 = {int::typeid,int::typeid,int::typeid};
   array<Type^>^aVtypes = temp2;
   array<Object^>^temp3 = {10,10,10};
   array<Object^>^aVargs1 = temp3;
   array<Object^>^temp4 = {20,20,20};
   array<Object^>^aVargs2 = temp4;
   
   // Call the  method to build our dynamic class.
   IVType = DynamicDotProductGen();
   Console::WriteLine( "---" );
   ConstructorInfo^ myDTctor = IVType->GetConstructor( aVtypes );
   aVector1 = myDTctor->Invoke( aVargs1 );
   aVector2 = myDTctor->Invoke( aVargs2 );
   array<Object^>^passMe = gcnew array<Object^>(1);
   passMe[ 0 ] = dynamic_cast<Object^>(aVector2);
   Console::WriteLine( "(10, 10, 10) . (20, 20, 20) = {0}", IVType->InvokeMember( "DotProduct", BindingFlags::InvokeMethod, nullptr, aVector1, passMe ) );
}

// +++ OUTPUT +++
// ---
// (10, 10, 10) . (20, 20, 20) = 600

using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class TestILGenerator {

    public static Type DynamicDotProductGen() {
    
       Type ivType = null;
       Type[] ctorParams = new Type[] { typeof(int),
                                typeof(int),
                        typeof(int)};
    
       AppDomain myDomain = Thread.GetDomain();
       AssemblyName myAsmName = new AssemblyName();
       myAsmName.Name = "IntVectorAsm";
    
       AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
                      myAsmName,
                      AssemblyBuilderAccess.RunAndSave);

       ModuleBuilder IntVectorModule = myAsmBuilder.DefineDynamicModule("IntVectorModule",
                                        "Vector.dll");

       TypeBuilder ivTypeBld = IntVectorModule.DefineType("IntVector",
                                      TypeAttributes.Public);

       FieldBuilder xField = ivTypeBld.DefineField("x", typeof(int),
                                                       FieldAttributes.Private);
       FieldBuilder yField = ivTypeBld.DefineField("y", typeof(int),
                                                       FieldAttributes.Private);
       FieldBuilder zField = ivTypeBld.DefineField("z", typeof(int),
                                                       FieldAttributes.Private);

           Type objType = Type.GetType("System.Object");
           ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);

       ConstructorBuilder ivCtor = ivTypeBld.DefineConstructor(
                      MethodAttributes.Public,
                      CallingConventions.Standard,
                      ctorParams);
       ILGenerator ctorIL = ivCtor.GetILGenerator();
           ctorIL.Emit(OpCodes.Ldarg_0);
           ctorIL.Emit(OpCodes.Call, objCtor);
           ctorIL.Emit(OpCodes.Ldarg_0);
           ctorIL.Emit(OpCodes.Ldarg_1);
           ctorIL.Emit(OpCodes.Stfld, xField);
           ctorIL.Emit(OpCodes.Ldarg_0);
           ctorIL.Emit(OpCodes.Ldarg_2);
           ctorIL.Emit(OpCodes.Stfld, yField);
           ctorIL.Emit(OpCodes.Ldarg_0);
           ctorIL.Emit(OpCodes.Ldarg_3);
           ctorIL.Emit(OpCodes.Stfld, zField);
       ctorIL.Emit(OpCodes.Ret);

       // This method will find the dot product of the stored vector
       // with another.

       Type[] dpParams = new Type[] { ivTypeBld };

           // Here, you create a MethodBuilder containing the
       // name, the attributes (public, static, private, and so on),
       // the return type (int, in this case), and a array of Type
       // indicating the type of each parameter. Since the sole parameter
       // is a IntVector, the very class you're creating, you will
       // pass in the TypeBuilder (which is derived from Type) instead of
       // a Type object for IntVector, avoiding an exception.

       // -- This method would be declared in C# as:
       //    public int DotProduct(IntVector aVector)

           MethodBuilder dotProductMthd = ivTypeBld.DefineMethod(
                                  "DotProduct",
                          MethodAttributes.Public,
                                          typeof(int),
                                          dpParams);

       // A ILGenerator can now be spawned, attached to the MethodBuilder.

       ILGenerator mthdIL = dotProductMthd.GetILGenerator();
    
       // Here's the body of our function, in MSIL form. We're going to find the
       // "dot product" of the current vector instance with the passed vector
       // instance. For reference purposes, the equation is:
       // (x1 * x2) + (y1 * y2) + (z1 * z2) = the dot product

       // First, you'll load the reference to the current instance "this"
       // stored in argument 0 (ldarg.0) onto the stack. Ldfld, the subsequent
       // instruction, will pop the reference off the stack and look up the
       // field "x", specified by the FieldInfo token "xField".

       mthdIL.Emit(OpCodes.Ldarg_0);
       mthdIL.Emit(OpCodes.Ldfld, xField);

       // That completed, the value stored at field "x" is now atop the stack.
       // Now, you'll do the same for the object reference we passed as a
       // parameter, stored in argument 1 (ldarg.1). After Ldfld executed,
       // you'll have the value stored in field "x" for the passed instance
       // atop the stack.

       mthdIL.Emit(OpCodes.Ldarg_1);
       mthdIL.Emit(OpCodes.Ldfld, xField);

           // There will now be two values atop the stack - the "x" value for the
       // current vector instance, and the "x" value for the passed instance.
       // You'll now multiply them, and push the result onto the evaluation stack.

       mthdIL.Emit(OpCodes.Mul_Ovf_Un);

       // Now, repeat this for the "y" fields of both vectors.

       mthdIL.Emit(OpCodes.Ldarg_0);
       mthdIL.Emit(OpCodes.Ldfld, yField);
       mthdIL.Emit(OpCodes.Ldarg_1);
       mthdIL.Emit(OpCodes.Ldfld, yField);
       mthdIL.Emit(OpCodes.Mul_Ovf_Un);

       // At this time, the results of both multiplications should be atop
       // the stack. You'll now add them and push the result onto the stack.

       mthdIL.Emit(OpCodes.Add_Ovf_Un);

       // Multiply both "z" field and push the result onto the stack.
       mthdIL.Emit(OpCodes.Ldarg_0);
       mthdIL.Emit(OpCodes.Ldfld, zField);
       mthdIL.Emit(OpCodes.Ldarg_1);
       mthdIL.Emit(OpCodes.Ldfld, zField);
       mthdIL.Emit(OpCodes.Mul_Ovf_Un);

       // Finally, add the result of multiplying the "z" fields with the
       // result of the earlier addition, and push the result - the dot product -
       // onto the stack.
       mthdIL.Emit(OpCodes.Add_Ovf_Un);

       // The "ret" opcode will pop the last value from the stack and return it
       // to the calling method. You're all done!

       mthdIL.Emit(OpCodes.Ret);

       ivType = ivTypeBld.CreateType();

       return ivType;
    }

    public static void Main() {
    
       Type IVType = null;
           object aVector1 = null;
           object aVector2 = null;
       Type[] aVtypes = new Type[] {typeof(int), typeof(int), typeof(int)};
           object[] aVargs1 = new object[] {10, 10, 10};
           object[] aVargs2 = new object[] {20, 20, 20};
    
       // Call the  method to build our dynamic class.

       IVType = DynamicDotProductGen();

           Console.WriteLine("---");

       ConstructorInfo myDTctor = IVType.GetConstructor(aVtypes);
       aVector1 = myDTctor.Invoke(aVargs1);
       aVector2 = myDTctor.Invoke(aVargs2);

       object[] passMe = new object[1];
           passMe[0] = (object)aVector2;

       Console.WriteLine("(10, 10, 10) . (20, 20, 20) = {0}",
                 IVType.InvokeMember("DotProduct",
                          BindingFlags.InvokeMethod,
                          null,
                          aVector1,
                          passMe));

       // +++ OUTPUT +++
       // ---
       // (10, 10, 10) . (20, 20, 20) = 600
    }
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit

 _


Class TestILGenerator
   
   
   Public Shared Function DynamicDotProductGen() As Type
      
      Dim ivType As Type = Nothing
      Dim ctorParams() As Type = {GetType(Integer), GetType(Integer), GetType(Integer)}
      
      Dim myDomain As AppDomain = Thread.GetDomain()
      Dim myAsmName As New AssemblyName()
      myAsmName.Name = "IntVectorAsm"
      
      Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly( _
                        myAsmName, _
                        AssemblyBuilderAccess.RunAndSave)
      
      Dim IntVectorModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule( _
                         "IntVectorModule", _
                         "Vector.dll")
      
      Dim ivTypeBld As TypeBuilder = IntVectorModule.DefineType("IntVector", TypeAttributes.Public)
      
      Dim xField As FieldBuilder = ivTypeBld.DefineField("x", _
                                 GetType(Integer), _
                                 FieldAttributes.Private)
      Dim yField As FieldBuilder = ivTypeBld.DefineField("y", _ 
                                 GetType(Integer), _
                                 FieldAttributes.Private)
      Dim zField As FieldBuilder = ivTypeBld.DefineField("z", _
                                 GetType(Integer), _
                                 FieldAttributes.Private)
      
      
      Dim objType As Type = Type.GetType("System.Object")
      Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type() {})
      
      Dim ivCtor As ConstructorBuilder = ivTypeBld.DefineConstructor( _
                     MethodAttributes.Public, _
                     CallingConventions.Standard, _
                     ctorParams)
      Dim ctorIL As ILGenerator = ivCtor.GetILGenerator()
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Call, objCtor)
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Ldarg_1)
      ctorIL.Emit(OpCodes.Stfld, xField)
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Ldarg_2)
      ctorIL.Emit(OpCodes.Stfld, yField)
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Ldarg_3)
      ctorIL.Emit(OpCodes.Stfld, zField)
      ctorIL.Emit(OpCodes.Ret)
     

      ' Now, you'll construct the method find the dot product of two vectors. First,
      ' let's define the parameters that will be accepted by the method. In this case,
      ' it's an IntVector itself!

      Dim dpParams() As Type = {ivTypeBld}
      
      ' Here, you create a MethodBuilder containing the
      ' name, the attributes (public, static, private, and so on),
      ' the return type (int, in this case), and a array of Type
      ' indicating the type of each parameter. Since the sole parameter
      ' is a IntVector, the very class you're creating, you will
      ' pass in the TypeBuilder (which is derived from Type) instead of 
      ' a Type object for IntVector, avoiding an exception. 
      ' -- This method would be declared in VB.NET as:
      '    Public Function DotProduct(IntVector aVector) As Integer

      Dim dotProductMthd As MethodBuilder = ivTypeBld.DefineMethod("DotProduct", _
                        MethodAttributes.Public, GetType(Integer), _
                                            dpParams)
      
      ' A ILGenerator can now be spawned, attached to the MethodBuilder.
      Dim mthdIL As ILGenerator = dotProductMthd.GetILGenerator()
      
      ' Here's the body of our function, in MSIL form. We're going to find the
      ' "dot product" of the current vector instance with the passed vector 
      ' instance. For reference purposes, the equation is:
      ' (x1 * x2) + (y1 * y2) + (z1 * z2) = the dot product
      ' First, you'll load the reference to the current instance "this"
      ' stored in argument 0 (ldarg.0) onto the stack. Ldfld, the subsequent
      ' instruction, will pop the reference off the stack and look up the
      ' field "x", specified by the FieldInfo token "xField".
      mthdIL.Emit(OpCodes.Ldarg_0)
      mthdIL.Emit(OpCodes.Ldfld, xField)
      
      ' That completed, the value stored at field "x" is now atop the stack.
      ' Now, you'll do the same for the object reference we passed as a
      ' parameter, stored in argument 1 (ldarg.1). After Ldfld executed,
      ' you'll have the value stored in field "x" for the passed instance
      ' atop the stack.
      mthdIL.Emit(OpCodes.Ldarg_1)
      mthdIL.Emit(OpCodes.Ldfld, xField)
      
      ' There will now be two values atop the stack - the "x" value for the
      ' current vector instance, and the "x" value for the passed instance.
      ' You'll now multiply them, and push the result onto the evaluation stack.
      mthdIL.Emit(OpCodes.Mul_Ovf_Un)
      
      ' Now, repeat this for the "y" fields of both vectors.
      mthdIL.Emit(OpCodes.Ldarg_0)
      mthdIL.Emit(OpCodes.Ldfld, yField)
      mthdIL.Emit(OpCodes.Ldarg_1)
      mthdIL.Emit(OpCodes.Ldfld, yField)
      mthdIL.Emit(OpCodes.Mul_Ovf_Un)
      
      ' At this time, the results of both multiplications should be atop
      ' the stack. You'll now add them and push the result onto the stack.
      mthdIL.Emit(OpCodes.Add_Ovf_Un)
      
      ' Multiply both "z" field and push the result onto the stack.
      mthdIL.Emit(OpCodes.Ldarg_0)
      mthdIL.Emit(OpCodes.Ldfld, zField)
      mthdIL.Emit(OpCodes.Ldarg_1)
      mthdIL.Emit(OpCodes.Ldfld, zField)
      mthdIL.Emit(OpCodes.Mul_Ovf_Un)
      
      ' Finally, add the result of multiplying the "z" fields with the
      ' result of the earlier addition, and push the result - the dot product -
      ' onto the stack.
      mthdIL.Emit(OpCodes.Add_Ovf_Un)
      
      ' The "ret" opcode will pop the last value from the stack and return it
      ' to the calling method. You're all done!
      mthdIL.Emit(OpCodes.Ret)
      
      
      ivType = ivTypeBld.CreateType()
      
      Return ivType
   End Function 'DynamicDotProductGen
    
   
   Public Shared Sub Main()
      
      Dim IVType As Type = Nothing
      Dim aVector1 As Object = Nothing
      Dim aVector2 As Object = Nothing
      Dim aVtypes() As Type = {GetType(Integer), GetType(Integer), GetType(Integer)}
      Dim aVargs1() As Object = {10, 10, 10}
      Dim aVargs2() As Object = {20, 20, 20}
      
      ' Call the  method to build our dynamic class.
      IVType = DynamicDotProductGen()
      
      
      Dim myDTctor As ConstructorInfo = IVType.GetConstructor(aVtypes)
      aVector1 = myDTctor.Invoke(aVargs1)
      aVector2 = myDTctor.Invoke(aVargs2)
      
      Console.WriteLine("---")
      Dim passMe(0) As Object
      passMe(0) = CType(aVector2, Object)
      
      Console.WriteLine("(10, 10, 10) . (20, 20, 20) = {0}", _
                        IVType.InvokeMember("DotProduct", BindingFlags.InvokeMethod, _
                        Nothing, aVector1, passMe))
   End Sub
End Class



' +++ OUTPUT +++
' ---
' (10, 10, 10) . (20, 20, 20) = 600

Remarques

TypeBuilder est la classe racine utilisée pour contrôler la création de classes dynamiques dans le Runtime. Il fournit un ensemble de routines utilisées pour définir des classes, ajouter des méthodes et des champs et créer la classe à l’intérieur d’un module. Un nouveau TypeBuilder peut être créé à partir d’un module dynamique en appelant la ModuleBuilder.DefineType méthode, qui retourne un TypeBuilder objet.

L’émission de réflexion fournit les options suivantes pour définir les types :

  • Définissez une classe ou une interface avec le nom donné.

  • Définissez une classe ou une interface avec le nom et les attributs donnés.

  • Définissez une classe avec le nom, les attributs et la classe de base donnés.

  • Définissez une classe avec le nom, les attributs, la classe de base et l’ensemble d’interfaces que la classe implémente.

  • Définissez une classe avec le nom, les attributs, la classe de base et la taille de compression donnés.

  • Définissez une classe avec le nom donné, les attributs, la classe de base et la taille de la classe dans son ensemble.

  • Définissez une classe avec le nom, les attributs, la classe de base, la taille de compression et la taille de la classe dans son ensemble.

Pour créer un type de tableau, un type pointeur ou un type ByRef pour un type incomplet qui est représenté par un TypeBuilder objet, utilisez la méthode, la méthode ou la méthode, MakeArrayType MakePointerType MakeByRefType respectivement.

Avant qu’un type soit utilisé, la TypeBuilder.CreateType méthode doit être appelée. CreateType termine la création du type. À la suite de l’appel à CreateType, l’appelant peut instancier le type à l’aide de la Activator.CreateInstance méthode et appeler des membres du type à l’aide de la Type.InvokeMember méthode. Appeler des méthodes qui modifient l’implémentation d’un type après l’appel de CreateType est une erreur. Par exemple, l’common language runtime lève une exception si l’appelant tente d’ajouter de nouveaux membres à un type.

Un initialiseur de classe est créé à l’aide de la TypeBuilder.DefineTypeInitializer méthode. DefineTypeInitializer retourne un ConstructorBuilder objet.

Les types imbriqués sont définis en appelant l’une des TypeBuilder.DefineNestedType méthodes.

Attributs

La TypeBuilder classe utilise l' TypeAttributes énumération pour spécifier plus précisément les caractéristiques du type à créer :

  • Les interfaces sont spécifiées à l’aide des TypeAttributes.Interface TypeAttributes.Abstract attributs et.

  • Les classes concrètes (classes qui ne peuvent pas être étendues) sont spécifiées à l’aide de l' TypeAttributes.Sealed attribut.

  • Plusieurs attributs déterminent la visibilité du type. Consultez la description de l' TypeAttributes énumération.

  • Si TypeAttributes.SequentialLayout est spécifié, le chargeur de classe dispose les champs dans l’ordre dans lequel ils sont lus à partir des métadonnées. Le chargeur de classe prend en compte la taille de compression spécifiée, mais ignore les offsets de champ spécifiés. Les métadonnées préservent l’ordre dans lequel les définitions de champ sont émises. Même dans une fusion, les métadonnées ne réorganisent pas les définitions de champ. Le chargeur honorera les offsets de champ spécifiés uniquement si TypeAttributes.ExplicitLayout est spécifié.

Problèmes connus

  • L’émission de réflexion ne vérifie pas si une classe non abstraite qui implémente une interface a implémenté toutes les méthodes déclarées dans l’interface. Toutefois, si la classe n’implémente pas toutes les méthodes déclarées dans une interface, le runtime ne charge pas la classe.

  • Bien que TypeBuilder soit dérivée de Type , certaines des méthodes abstraites définies dans la Type classe ne sont pas totalement implémentées dans la TypeBuilder classe. Les appels à ces TypeBuilder méthodes lèvent une NotSupportedException exception. Les fonctionnalités souhaitées peuvent être obtenues en extrayant le type créé à l’aide du Type.GetType ou de Assembly.GetType et en reflétant le type récupéré.

Constructeurs

TypeBuilder()

Champs

UnspecifiedTypeSize

Signifie que la taille totale du type n’est pas spécifiée.

Propriétés

Assembly

Récupère l’assembly dynamique qui contient la définition de ce type.

AssemblyQualifiedName

Retourne le nom complet de ce type, qualifié par le nom complet de l'assembly.

Attributes
Attributes

Obtient les attributs associés à Type.

(Hérité de Type)
Attributes (Hérité de TypeInfo)
BaseType

Récupère le type de base de ce type.

ContainsGenericParameters
ContainsGenericParameters

Obtient une valeur indiquant si l'objet Type actuel a des paramètres de type qui n'ont pas été remplacés par des types spécifiques.

(Hérité de Type)
ContainsGenericParameters (Hérité de TypeInfo)
CustomAttributes

Obtient une collection qui contient les attributs personnalisés de ce membre.

(Hérité de MemberInfo)
DeclaredConstructors

Obtient une collection des constructeurs déclarés par le type actuel.

(Hérité de TypeInfo)
DeclaredEvents

Obtient une collection des événements définis par le type actuel.

(Hérité de TypeInfo)
DeclaredFields

Obtient une collection des champs définis par le type actuel.

(Hérité de TypeInfo)
DeclaredMembers

Obtient une collection du membre défini par le type actuel.

(Hérité de TypeInfo)
DeclaredMethods

Obtient une collection des méthodes définies par le type actuel.

(Hérité de TypeInfo)
DeclaredNestedTypes

Obtient une collection des types imbriqués définis par le type actuel.

(Hérité de TypeInfo)
DeclaredProperties

Obtient la collection des propriétés définies par le type actuel.

(Hérité de TypeInfo)
DeclaringMethod

Obtient la méthode qui a déclaré le paramètre de type générique actuel.

DeclaringMethod

Obtient un MethodBase représentant la méthode de déclaration, si le Type actuel représente un paramètre de type d’une méthode générique.

(Hérité de Type)
DeclaringMethod (Hérité de TypeInfo)
DeclaringType

Retourne le type qui a déclaré ce type.

DeclaringType

Obtient le type qui déclare le type imbriqué ou paramètre de type générique actuel.

(Hérité de Type)
FullName

Récupère le chemin complet de ce type.

GenericParameterAttributes

Obtient une valeur qui indique la covariance et les contraintes spéciales du paramètre de type générique actuel.

GenericParameterAttributes

Obtient une combinaison d'indicateurs GenericParameterAttributes qui décrivent la covariance et des contraintes spéciales du paramètre de type générique actuel.

(Hérité de Type)
GenericParameterAttributes (Hérité de TypeInfo)
GenericParameterPosition

Obtient la position d’un paramètre de type dans la liste des paramètres de type du type générique qui a déclaré le paramètre.

GenericParameterPosition

Obtient la position du paramètre de type dans la liste des paramètres de type du type générique ou de la méthode qui a déclaré le paramètre, quand l'objet Type représente un paramètre de type d'un type générique ou une méthode générique.

(Hérité de Type)
GenericParameterPosition (Hérité de TypeInfo)
GenericTypeArguments
GenericTypeArguments

Obtient un tableau des arguments de type générique pour ce type.

(Hérité de Type)
GenericTypeArguments (Hérité de TypeInfo)
GenericTypeParameters

Obtient un tableau des paramètres de type génériques de l'instance actuelle.

(Hérité de TypeInfo)
GUID

Récupère le GUID de ce type.

HasElementType

Obtient une valeur indiquant si le Type actuel englobe ou se réfère à un autre type, c'est-à-dire si le Type actuel est un tableau ou un pointeur ou encore s'il est passé par référence.

(Hérité de Type)
HasElementType (Hérité de TypeInfo)
ImplementedInterfaces

Obtient une collection d'interfaces implémentée par le type actuel.

(Hérité de TypeInfo)
IsAbstract

Obtient une valeur indiquant si le Type est abstrait et doit être substitué.

(Hérité de Type)
IsAbstract (Hérité de TypeInfo)
IsAnsiClass

Obtient une valeur indiquant si l'attribut de format de chaîne AnsiClass est sélectionné pour Type.

(Hérité de Type)
IsAnsiClass (Hérité de TypeInfo)
IsArray

Obtient une valeur qui indique si le type est un tableau.

(Hérité de Type)
IsArray (Hérité de TypeInfo)
IsAutoClass

Obtient une valeur indiquant si l'attribut de format de chaîne AutoClass est sélectionné pour Type.

(Hérité de Type)
IsAutoClass (Hérité de TypeInfo)
IsAutoLayout

Obtient une valeur qui indique si les champs du type actuel sont placés automatiquement par le Common Language Runtime.

(Hérité de Type)
IsAutoLayout (Hérité de TypeInfo)
IsByRef

Obtient une valeur indiquant si Type est passé par référence.

(Hérité de Type)
IsByRef (Hérité de TypeInfo)
IsByRefLike
IsByRefLike

Obtient une valeur qui indique si le type est une structure de type byref.

(Hérité de Type)
IsClass

Obtient une valeur indiquant si le Type est une classe ou un délégué, c'est-à-dire ni un type valeur ni une interface.

(Hérité de Type)
IsClass (Hérité de TypeInfo)
IsCollectible

Obtient une valeur qui indique si cet objet MemberInfo fait partie d’un assembly contenu dans un AssemblyLoadContext pouvant être collecté.

(Hérité de MemberInfo)
IsCOMObject

Obtient une valeur indiquant si Type est un objet COM.

(Hérité de Type)
IsCOMObject (Hérité de TypeInfo)
IsConstructedGenericType

Obtient une valeur qui indique si cet objet représente un type générique construit.

IsConstructedGenericType

Obtient une valeur qui indique si cet objet représente un type générique construit. Vous pouvez créer des instances d'un type générique construit.

(Hérité de Type)
IsContextful

Obtient une valeur indiquant si Type peut être hébergé dans un contexte.

(Hérité de Type)
IsEnum
IsEnum

Obtient une valeur indiquant si le Type actuel représente une énumération.

(Hérité de Type)
IsEnum (Hérité de TypeInfo)
IsExplicitLayout

Obtient une valeur qui indique si les champs du type actuel sont placés aux offsets explicitement spécifiés.

(Hérité de Type)
IsExplicitLayout (Hérité de TypeInfo)
IsGenericMethodParameter

Obtient une valeur indiquant si le Type actuel représente un paramètre de type dans la définition d’une méthode générique.

(Hérité de Type)
IsGenericParameter

Obtient une valeur indiquant si le type actuel est un paramètre de type générique.

IsGenericParameter

Obtient une valeur indiquant si le Type actuel représente un paramètre de type d'une définition de type ou de méthode générique.

(Hérité de Type)
IsGenericParameter (Hérité de TypeInfo)
IsGenericType

Obtient une valeur indiquant si le type actuel est un type générique.

IsGenericType

Obtient une valeur indiquant si le type actuel est un type générique.

(Hérité de Type)
IsGenericType (Hérité de TypeInfo)
IsGenericTypeDefinition

Obtient une valeur qui indique si le TypeBuilder actuel représente une définition de type générique, à partir de laquelle d’autres types génériques peuvent être construits.

IsGenericTypeDefinition

Obtient une valeur qui indique si le Type actuel représente une définition de type générique, à partir de laquelle d'autres types génériques peuvent être construits.

(Hérité de Type)
IsGenericTypeDefinition (Hérité de TypeInfo)
IsGenericTypeParameter

Obtient une valeur indiquant si le Type actuel représente un paramètre de type dans la définition d’un type générique.

(Hérité de Type)
IsImport

Obtient une valeur qui indique si le Type a un attribut appliqué ComImportAttribute, indiquant qu'il a été importé d'une bibliothèque de types COM.

(Hérité de Type)
IsImport (Hérité de TypeInfo)
IsInterface

Obtient une valeur indiquant si le Type est une interface, c'est-à-dire ni une classe ni un type valeur.

(Hérité de Type)
IsInterface (Hérité de TypeInfo)
IsLayoutSequential

Obtient une valeur qui indique si les champs du type actuel sont placés séquentiellement, en respectant l'ordre dans lequel ils ont été définis ou émis aux métadonnées.

(Hérité de Type)
IsLayoutSequential (Hérité de TypeInfo)
IsMarshalByRef

Obtient une valeur indiquant si Type est marshalé par référence.

(Hérité de Type)
IsMarshalByRef (Hérité de TypeInfo)
IsNested

Obtient une valeur indiquant si l'objet Type actuel représente un type dont la définition est imbriquée dans la définition d'un autre type.

(Hérité de Type)
IsNested (Hérité de TypeInfo)
IsNestedAssembly

Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans son propre assembly.

(Hérité de Type)
IsNestedAssembly (Hérité de TypeInfo)
IsNestedFamANDAssem

Obtient une valeur indiquant si le Type est imbriqué et visible uniquement par rapport aux classes qui appartiennent à la fois à sa propre famille et à son propre assembly.

(Hérité de Type)
IsNestedFamANDAssem (Hérité de TypeInfo)
IsNestedFamily

Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans sa propre famille.

(Hérité de Type)
IsNestedFamily (Hérité de TypeInfo)
IsNestedFamORAssem

Obtient une valeur indiquant si le Type est imbriqué et visible uniquement par rapport aux classes qui appartiennent à sa propre famille ou à son propre assembly.

(Hérité de Type)
IsNestedFamORAssem (Hérité de TypeInfo)
IsNestedPrivate

Obtient une valeur indiquant si le Type est imbriqué et déclaré privé.

(Hérité de Type)
IsNestedPrivate (Hérité de TypeInfo)
IsNestedPublic

Obtient une valeur indiquant si une classe est imbriquée et déclarée publique.

(Hérité de Type)
IsNestedPublic (Hérité de TypeInfo)
IsNotPublic

Obtient une valeur indiquant si Type n'est pas déclaré public.

(Hérité de Type)
IsNotPublic (Hérité de TypeInfo)
IsPointer

Obtient une valeur indiquant si Type est un pointeur.

(Hérité de Type)
IsPointer (Hérité de TypeInfo)
IsPrimitive

Obtient une valeur indiquant si le Type est l'un des types primitifs.

(Hérité de Type)
IsPrimitive (Hérité de TypeInfo)
IsPublic

Obtient une valeur indiquant si Type est déclaré public.

(Hérité de Type)
IsPublic (Hérité de TypeInfo)
IsSealed

Obtient une valeur indiquant si Type est déclaré sealed.

(Hérité de Type)
IsSealed (Hérité de TypeInfo)
IsSecurityCritical

Obtient une valeur qui indique si le type actuel est critique de sécurité (security-critical) ou critique sécurisé (security-safe-critical), et peut donc effectuer des opérations critiques.

IsSecurityCritical

Obtient une valeur qui indique si le type actuel est critique de sécurité (security-critical) ou critique sécurisé (security-safe-critical) au niveau de confiance actuel et peut donc exécuter des opérations critiques.

(Hérité de Type)
IsSecuritySafeCritical

Obtient une valeur qui indique si le type actuel est critique sécurisé, autrement dit s’il peut effectuer des opérations critiques et s’il est accessible par du code transparent.

IsSecuritySafeCritical

Obtient une valeur qui indique si le type actuel est critique sécurisé au niveau de confiance actuel, autrement dit s'il peut exécuter des opérations critiques et être accessible par du code transparent.

(Hérité de Type)
IsSecurityTransparent

Obtient une valeur qui indique si le type actuel est transparent et s’il ne peut donc pas effectuer d’opérations critiques.

IsSecurityTransparent

Obtient une valeur qui indique si le type actuel est transparent au niveau de confiance actuel et ne peut donc pas exécuter d'opérations critiques.

(Hérité de Type)
IsSerializable
IsSerializable

Obtient une valeur indiquant si le Type est sérialisable.

(Hérité de Type)
IsSerializable (Hérité de TypeInfo)
IsSignatureType

Obtient une valeur qui indique si le type est un type de signature.

(Hérité de Type)
IsSpecialName

Obtient une valeur indiquant si le type a un nom qui nécessite un traitement spécial.

(Hérité de Type)
IsSpecialName (Hérité de TypeInfo)
IsSZArray
IsSZArray

Obtient une valeur qui indique si le type est un type tableau qui peut représenter uniquement un tableau unidimensionnel avec une limite inférieure à zéro.

(Hérité de Type)
IsTypeDefinition
IsTypeDefinition

Obtient une valeur qui indique si le type est une définition de type.

(Hérité de Type)
IsUnicodeClass

Obtient une valeur indiquant si l'attribut de format de chaîne UnicodeClass est sélectionné pour Type.

(Hérité de Type)
IsUnicodeClass (Hérité de TypeInfo)
IsValueType

Obtient une valeur indiquant si le Type est un type valeur.

(Hérité de Type)
IsValueType (Hérité de TypeInfo)
IsVariableBoundArray
IsVariableBoundArray

Obtient une valeur qui indique si le type est un type tableau qui peut représenter uniquement un tableau multidimensionnel ou un tableau avec une limite inférieure arbitraire.

(Hérité de Type)
IsVisible

Obtient une valeur qui indique si Type est accessible par code à l'extérieur de l'assembly.

(Hérité de Type)
IsVisible (Hérité de TypeInfo)
MemberType

Obtient une valeur MemberTypes qui indique que ce membre est un type ou un type imbriqué.

(Hérité de Type)
MemberType (Hérité de TypeInfo)
MetadataToken

Obtient un jeton qui identifie le module dynamique actuel dans les métadonnées.

MetadataToken

Obtient une valeur qui identifie un élément de métadonnées.

(Hérité de MemberInfo)
Module

Récupère le module dynamique qui contient la définition de ce type.

Name

Récupère le nom de ce type.

Namespace

Récupère l’espace de noms dans lequel ce TypeBuilder est défini.

PackingSize

Récupère la taille de compactage de ce type.

ReflectedType

Retourne le type qui a été utilisé pour obtenir ce type.

ReflectedType

Obtient l'objet classe utilisé pour obtenir cette instance de MemberInfo.

(Hérité de MemberInfo)
ReflectedType

Obtient l'objet de la classe qui a été utilisé pour obtenir ce membre.

(Hérité de Type)
Size

Récupère la taille totale d’un type.

StructLayoutAttribute

Obtient un StructLayoutAttribute qui décrit la disposition du type actuel.

(Hérité de Type)
StructLayoutAttribute (Hérité de TypeInfo)
TypeHandle

Non pris en charge dans les modules dynamiques.

TypeHandle

Obtient le handle pour le Type actuel.

(Hérité de Type)
TypeInitializer

Obtient l'initialiseur du type.

(Hérité de Type)
TypeInitializer (Hérité de TypeInfo)
TypeToken

Retourne le jeton de ce type.

UnderlyingSystemType

Retourne le type de système sous-jacent pour ce TypeBuilder.

UnderlyingSystemType (Hérité de TypeInfo)

Méthodes

AddDeclarativeSecurity(SecurityAction, PermissionSet)

Ajoute la sécurité déclarative à ce type.

AddInterfaceImplementation(Type)

Ajoute une interface implémentée par ce type.

AsType()

Retourne le type actuel sous forme d'objet Type.

(Hérité de TypeInfo)
CreateType()

Crée un objet Type pour la classe. Après avoir défini les champs et les méthodes sur la classe, CreateType est appelé pour charger son objet Type.

CreateTypeInfo()

Obtient un objet TypeInfo qui représente ce type.

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Ajoute un nouveau constructeur au type avec les attributs donnés et la signature.

DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])

Ajoute un nouveau constructeur au type, avec les attributs, la signature et les modificateurs personnalisés donnés.

DefineDefaultConstructor(MethodAttributes)

Définit le constructeur sans paramètre. Le constructeur défini ici appelle simplement le constructeur sans paramètre du parent.

DefineEvent(String, EventAttributes, Type)

Ajoute un nouvel événement au type avec le nom, les attributs et le type d’événement donnés.

DefineField(String, Type, FieldAttributes)

Ajoute un nouveau champ au type avec les nom, attributs et type de champ donnés.

DefineField(String, Type, Type[], Type[], FieldAttributes)

Ajoute un nouveau champ au type avec le nom, les attributs, le type de champ et les modificateurs personnalisés donnés.

DefineGenericParameters(String[])

Définit les paramètres de type générique pour le type actuel, en spécifiant leur nombre et leurs noms, et retourne un tableau d’objets GenericTypeParameterBuilder pouvant être utilisés pour définir leurs contraintes.

DefineInitializedData(String, Byte[], FieldAttributes)

Définit un champ de données non initialisées dans la section .sdata du fichier exécutable portable (PE).

DefineMethod(String, MethodAttributes)

Ajoute une nouvelle méthode au type, avec le nom et les attributs de méthode spécifiés.

DefineMethod(String, MethodAttributes, CallingConventions)

Ajoute une nouvelle méthode au type, avec le nom, les attributs de méthode et la convention d’appel spécifiés.

DefineMethod(String, MethodAttributes, CallingConventions, Type, Type[])

Ajoute une nouvelle méthode au type, avec le nom, les attributs de méthode, la convention d’appel et la signature de méthode spécifiés.

DefineMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

Ajoute une nouvelle méthode au type avec les nom, attributs de méthode, convention d’appel, signature de méthode et modificateurs personnalisés spécifiés.

DefineMethod(String, MethodAttributes, Type, Type[])

Ajoute une nouvelle méthode au type, avec le nom, les attributs de méthode et la signature de méthode spécifiés.

DefineMethodOverride(MethodInfo, MethodInfo)

Spécifie un corps de méthode donné qui implémente une déclaration de méthode donnée, éventuellement avec un nom différent.

DefineNestedType(String)

Définit un type imbriqué, en fonction de son nom.

DefineNestedType(String, TypeAttributes)

Définit un type imbriqué, en fonction de son nom et de ses attributs.

DefineNestedType(String, TypeAttributes, Type)

Définit un type imbriqué, en fonction de son nom, de ses attributs et du type qu’il étend.

DefineNestedType(String, TypeAttributes, Type, Int32)

Définit un type imbriqué, en fonction de son nom, de ses attributs, de la taille totale du type et du type qu’il étend.

DefineNestedType(String, TypeAttributes, Type, PackingSize)

Définit un type imbriqué, en fonction de son nom, de ses attributs, du type qu’il étend et de la taille de compression.

DefineNestedType(String, TypeAttributes, Type, PackingSize, Int32)

Définit un type imbriqué, en fonction de ses nom, attributs, taille et du type qu’il étend.

DefineNestedType(String, TypeAttributes, Type, Type[])

Définit un type imbriqué, en fonction de son nom, de ses attributs, du type qu’il étend et des interfaces qu’il implémente.

DefinePInvokeMethod(String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet)

Définit une méthode PInvoke en fonction de son nom, du nom de la DLL dans laquelle elle est définie, des attributs de la méthode, de sa convention d’appel, de son type de retour, des types de ses paramètres et des indicateurs PInvoke.

DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet)

Définit une méthode PInvoke en fonction de son nom, du nom de la DLL dans laquelle elle est définie, du nom du point d’entrée, des attributs de la méthode, de sa convention d’appel, de son type de retour, des types de ses paramètres et des indicateurs PInvoke.

DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][], CallingConvention, CharSet)

Définit une méthode PInvoke en fonction de son nom, du nom de la DLL dans laquelle elle est définie, du nom du point d’entrée, des attributs de la méthode, de sa convention d’appel, de son type de retour, des types de ses paramètres, des indicateurs PInvoke et des modificateurs personnalisés des paramètres et du type de retour.

DefineProperty(String, PropertyAttributes, CallingConventions, Type, Type[])

Ajoute une nouvelle propriété au type avec le nom, les attributs, la convention d’appel et la signature de propriété spécifiés.

DefineProperty(String, PropertyAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

Ajoute une nouvelle propriété au type avec le nom, la convention d’appel, la signature de propriété et les modificateurs personnalisés spécifiés.

DefineProperty(String, PropertyAttributes, Type, Type[])

Ajoute une nouvelle propriété au type avec le nom et la signature de propriété donnés.

DefineProperty(String, PropertyAttributes, Type, Type[], Type[], Type[], Type[][], Type[][])

Ajoute une nouvelle propriété au type, avec le nom, la signature de propriété et les modificateurs personnalisés donnés.

DefineTypeInitializer()

Définit l’initialiseur de ce type.

DefineUninitializedData(String, Int32, FieldAttributes)

Définit un champ de données non initialisé dans la section .sdata du fichier exécutable portable (PE).

Equals(Object)

Détermine si le type de système sous-jacent de l’objet Type actuel est identique au type de système sous-jacent du Object spécifié.

(Hérité de Type)
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de MemberInfo)
Equals(Type)

Détermine si le type de système sous-jacent du Type actuel est identique au type de système sous-jacent du Type spécifié.

(Hérité de Type)
FindInterfaces(TypeFilter, Object)

Retourne un tableau d'objets Type représentant une liste filtrée d'interfaces implémentées ou héritées par le Type actuel.

(Hérité de Type)
FindInterfaces(TypeFilter, Object) (Hérité de TypeInfo)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)

Retourne un tableau filtré d'objets MemberInfo du type du membre spécifié.

(Hérité de Type)
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) (Hérité de TypeInfo)
GetArrayRank()
GetArrayRank()

Obtient le nombre de dimensions dans un tableau.

(Hérité de Type)
GetArrayRank() (Hérité de TypeInfo)
GetAttributeFlagsImpl()

En cas de substitution dans une classe dérivée, implémente la propriété Attributes et obtient une combinaison de bits de valeurs d’énumération qui indique les attributs qui sont associés au Type.

(Hérité de Type)
GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Recherche un constructeur dont les paramètres correspondent aux types d’arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d’appel indiquées.

(Hérité de Type)
GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])

Recherche un constructeur dont les paramètres correspondent aux types d’arguments et modificateurs spécifiés, à l’aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetConstructor(BindingFlags, Type[])

Recherche un constructeur dont les paramètres correspondent aux types d’arguments spécifiés, à l’aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetConstructor(Type, ConstructorInfo)

Retourne le constructeur du type générique construit spécifié qui correspond au constructeur spécifié de la définition de type générique.

GetConstructor(Type[])

Recherche un constructeur d'instance public dont les paramètres correspondent aux types contenus dans le tableau spécifié.

(Hérité de Type)
GetConstructor(Type[]) (Hérité de TypeInfo)
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

En cas de substitution dans une classe dérivée, recherche un constructeur dont les paramètres correspondent aux types d’arguments et modificateurs spécifiés, à l’aide des contraintes de liaison et de la convention d’appel spécifiées.

(Hérité de Type)
GetConstructors()

Retourne tous les constructeurs publics définis pour le Type actuel.

(Hérité de Type)
GetConstructors() (Hérité de TypeInfo)
GetConstructors(BindingFlags)

Retourne un tableau d’objets ConstructorInfo représentant les constructeurs publics et non publics définis pour cette classe, comme spécifié.

GetConstructors(BindingFlags) (Hérité de TypeInfo)
GetCustomAttributes(Boolean)

Retourne tous les attributs personnalisés définis pour ce type.

GetCustomAttributes(Boolean)

En cas de substitution dans une classe dérivée, retourne un tableau de tous les attributs personnalisés appliqués à ce membre.

(Hérité de MemberInfo)
GetCustomAttributes(Type, Boolean)

Retourne tous les attributs personnalisés du type actuel qui peuvent être assignés à un type spécifié.

GetCustomAttributes(Type, Boolean)

En cas de substitution dans une classe dérivée, retourne un tableau d’attributs personnalisés appliqués à ce membre et identifiés par Type.

(Hérité de MemberInfo)
GetCustomAttributesData()

Renvoie une liste d’objets CustomAttributeData représentant des données sur les attributs qui ont été appliqués au membre cible.

(Hérité de MemberInfo)
GetDeclaredEvent(String)

Retourne un objet qui représente l’événement spécifié déclaré par le type actuel.

(Hérité de TypeInfo)
GetDeclaredField(String)

Retourne un objet qui représente le champ spécifié déclaré par le type actuel.

(Hérité de TypeInfo)
GetDeclaredMethod(String)

Retourne un objet qui représente la méthode spécifiée déclarée par le type actuel.

(Hérité de TypeInfo)
GetDeclaredMethods(String)

Retourne une collection qui contient toutes les méthodes déclarées sur le type actuel qui correspondent au nom spécifié.

(Hérité de TypeInfo)
GetDeclaredNestedType(String)

Retourne un objet qui représente le type imbriqué spécifié déclaré par le type actuel.

(Hérité de TypeInfo)
GetDeclaredProperty(String)

Retourne un objet qui représente la propriété spécifiée déclarée par le type actuel.

(Hérité de TypeInfo)
GetDefaultMembers()

Recherche les membres définis pour le Type actuel dont le DefaultMemberAttribute est défini.

(Hérité de Type)
GetDefaultMembers() (Hérité de TypeInfo)
GetElementType()

L'appel de cette méthode lève toujours NotSupportedException.

GetEnumName(Object)

Retourne le nom de la constante qui a la valeur spécifiée, pour le type énumération actuel.

(Hérité de Type)
GetEnumName(Object) (Hérité de TypeInfo)
GetEnumNames()

Retourne les noms des membres du type énumération actuel.

(Hérité de Type)
GetEnumNames() (Hérité de TypeInfo)
GetEnumUnderlyingType()

Retourne le type sous-jacent du type énumération actuel.

(Hérité de Type)
GetEnumUnderlyingType() (Hérité de TypeInfo)
GetEnumValues()

Retourne un tableau des valeurs des constantes dans le type énumération actuel.

(Hérité de Type)
GetEnumValues() (Hérité de TypeInfo)
GetEvent(String)

Retourne l'objet EventInfo représentant l'événement public spécifié.

(Hérité de Type)
GetEvent(String) (Hérité de TypeInfo)
GetEvent(String, BindingFlags)

Retourne l’événement avec le nom spécifié.

GetEvent(String, BindingFlags) (Hérité de TypeInfo)
GetEvents()

Retourne les événements publics déclarés ou hérités par ce type.

GetEvents() (Hérité de TypeInfo)
GetEvents(BindingFlags)

Retourne les événements publics et non publics déclarés par ce type.

GetEvents(BindingFlags) (Hérité de TypeInfo)
GetField(String)

Recherche le champ public portant le nom spécifié.

(Hérité de Type)
GetField(String) (Hérité de TypeInfo)
GetField(String, BindingFlags)

Retourne le champ spécifié par le nom donné.

GetField(String, BindingFlags) (Hérité de TypeInfo)
GetField(Type, FieldInfo)

Retourne le champ du type générique construit spécifié qui correspond au champ spécifié de la définition de type générique.

GetFields()

Retourne tous les champs publics du Type actuel.

(Hérité de Type)
GetFields() (Hérité de TypeInfo)
GetFields(BindingFlags)

Retourne les champs publics et non publics déclarés par ce type.

GetFields(BindingFlags) (Hérité de TypeInfo)
GetGenericArguments()

Retourne un tableau d’objets Type qui représentent les arguments de type d’un type générique ou les paramètres de type d’une définition de type générique.

GetGenericArguments()

Retourne un tableau d’objets Type qui représentent les arguments de type d’un type générique fermé ou les paramètres de type d’une définition de type générique.

(Hérité de Type)
GetGenericArguments() (Hérité de TypeInfo)
GetGenericParameterConstraints()
GetGenericParameterConstraints()

Retourne un tableau d'objets Type qui représentent les contraintes qui s'exercent sur le paramètre de type générique actuel.

(Hérité de Type)
GetGenericParameterConstraints() (Hérité de TypeInfo)
GetGenericTypeDefinition()

Retourne un objet Type qui représente une définition de type générique à partir de laquelle le type actuel peut être obtenu.

GetGenericTypeDefinition()

Retourne un objet Type qui représente une définition de type générique à partir de laquelle le type générique actuel peut être construit.

(Hérité de Type)
GetGenericTypeDefinition() (Hérité de TypeInfo)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Type)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de MemberInfo)
GetInterface(String)

Recherche l'interface avec le nom spécifié.

(Hérité de Type)
GetInterface(String) (Hérité de TypeInfo)
GetInterface(String, Boolean)

Retourne l’interface implémentée (directement ou indirectement) par cette classe avec le nom qualifié complet correspondant au nom de l’interface donnée.

GetInterface(String, Boolean) (Hérité de TypeInfo)
GetInterfaceMap(Type)

Retourne un mappage d’interface pour l’interface demandée.

GetInterfaceMap(Type)

Retourne un mappage d'interface pour le type interface spécifié.

(Hérité de Type)
GetInterfaces()

Retourne un tableau de toutes les interfaces implémentées sur ce type et ses types de base.

GetInterfaces() (Hérité de TypeInfo)
GetMember(String)

Recherche les membres publics portant le nom spécifié.

(Hérité de Type)
GetMember(String) (Hérité de TypeInfo)
GetMember(String, BindingFlags)

Recherche les membres spécifiés, à l'aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetMember(String, BindingFlags) (Hérité de TypeInfo)
GetMember(String, MemberTypes, BindingFlags)

Retourne tous les membres publics et non publics déclarés ou hérités par ce type, comme indiqué.

GetMember(String, MemberTypes, BindingFlags) (Hérité de TypeInfo)
GetMembers()

Retourne tous les membres publics du Type actuel.

(Hérité de Type)
GetMembers() (Hérité de TypeInfo)
GetMembers(BindingFlags)

Retourne les membres publics et non publics déclarés ou hérités par ce type.

GetMembers(BindingFlags) (Hérité de TypeInfo)
GetMemberWithSameMetadataDefinitionAs(MemberInfo)

Recherche le MemberInfo sur le actuel Type qui correspond à l’objet spécifié MemberInfo .

(Hérité de Type)
GetMethod(String)

Recherche la méthode publique avec le nom spécifié.

(Hérité de Type)
GetMethod(String) (Hérité de TypeInfo)
GetMethod(String, BindingFlags)

Recherche la méthode spécifiée, à l'aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetMethod(String, BindingFlags) (Hérité de TypeInfo)
GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d'appel indiquées.

(Hérité de Type)
GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

Recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetMethod(String, BindingFlags, Type[])

Recherche la méthode spécifiée dont les paramètres correspondent aux types d’arguments spécifiés, à l’aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

Recherche la méthode spécifiée dont les paramètres correspondent au nombre de paramètres génériques, aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d'appel indiquées.

(Hérité de Type)
GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[])

Recherche la méthode spécifiée dont les paramètres correspondent au nombre de paramètres génériques, aux types d'arguments et aux modificateurs spécifiés, à l'aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetMethod(String, Int32, Type[])

Recherche la méthode publique spécifiée dont les paramètres correspondent au nombre d’arguments génériques et aux types d’arguments spécifiés.

(Hérité de Type)
GetMethod(String, Int32, Type[], ParameterModifier[])

Recherche la méthode publique spécifiée dont les paramètres correspondent au nombre d’arguments génériques, aux modificateurs et aux types d’arguments spécifiés.

(Hérité de Type)
GetMethod(String, Type[])

Recherche la méthode publique spécifiée dont les paramètres correspondent aux types d'arguments spécifiés.

(Hérité de Type)
GetMethod(String, Type[]) (Hérité de TypeInfo)
GetMethod(String, Type[], ParameterModifier[])

Recherche la méthode publique spécifiée dont les paramètres correspondent aux types d’arguments et modificateurs spécifiés.

(Hérité de Type)
GetMethod(String, Type[], ParameterModifier[]) (Hérité de TypeInfo)
GetMethod(Type, MethodInfo)

Retourne la méthode du type générique construit spécifié qui correspond à la méthode spécifiée de la définition de type générique.

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

En cas de substitution dans une classe dérivée, recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison et de la convention d'appel spécifiées.

(Hérité de Type)
GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

En cas de substitution dans une classe dérivée, recherche la méthode spécifiée dont les paramètres correspondent au nombre de paramètres, aux types d'arguments et aux modificateurs spécifiés, à l'aide des contraintes de liaison et de la convention d'appel spécifiées.

(Hérité de Type)
GetMethods()

Retourne toutes les méthodes publiques du Type actuel.

(Hérité de Type)
GetMethods() (Hérité de TypeInfo)
GetMethods(BindingFlags)

Retourne toutes les méthodes publiques et non publiques déclarées ou héritées par ce type, comme spécifié.

GetMethods(BindingFlags) (Hérité de TypeInfo)
GetNestedType(String)

Recherche le type imbriqué public avec le nom spécifié.

(Hérité de Type)
GetNestedType(String) (Hérité de TypeInfo)
GetNestedType(String, BindingFlags)

Retourne les types imbriqués publics et non publics déclarés par ce type.

GetNestedType(String, BindingFlags) (Hérité de TypeInfo)
GetNestedTypes()

Retourne les types publics imbriqués dans le Type actuel.

(Hérité de Type)
GetNestedTypes() (Hérité de TypeInfo)
GetNestedTypes(BindingFlags)

Retourne les types imbriqués publics et non publics déclarés ou hérités par ce type.

GetNestedTypes(BindingFlags) (Hérité de TypeInfo)
GetProperties()

Retourne toutes les propriétés publiques du Type actuel.

(Hérité de Type)
GetProperties() (Hérité de TypeInfo)
GetProperties(BindingFlags)

Retourne toutes les propriétés publiques et non publiques déclarées ou héritées par ce type, comme spécifié.

GetProperties(BindingFlags) (Hérité de TypeInfo)
GetProperty(String)

Recherche la propriété publique avec le nom spécifié.

(Hérité de Type)
GetProperty(String) (Hérité de TypeInfo)
GetProperty(String, BindingFlags)

Recherche la propriété spécifiée, à l'aide des contraintes de liaison spécifiées.

(Hérité de Type)
GetProperty(String, BindingFlags) (Hérité de TypeInfo)
GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

Recherche la propriété spécifiée dont les paramètres correspondent aux types d’arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison indiquées.

(Hérité de Type)
GetProperty(String, Type)

Recherche la propriété publique à l'aide du nom et du type de retour spécifiés.

(Hérité de Type)
GetProperty(String, Type) (Hérité de TypeInfo)
GetProperty(String, Type, Type[])

Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d’arguments spécifiés.

(Hérité de Type)
GetProperty(String, Type, Type[]) (Hérité de TypeInfo)
GetProperty(String, Type, Type[], ParameterModifier[])

Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés.

(Hérité de Type)
GetProperty(String, Type, Type[], ParameterModifier[]) (Hérité de TypeInfo)
GetProperty(String, Type[])

Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d’arguments spécifiés.

(Hérité de Type)
GetProperty(String, Type[]) (Hérité de TypeInfo)
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

En cas de substitution dans une classe dérivée, recherche la propriété spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, en utilisant les contraintes de liaison indiquées.

(Hérité de Type)
GetType()

Obtient le Type actuel.

(Hérité de Type)
GetType()

Identifie les attributs d’un membre et donne accès à ses métadonnées.

(Hérité de MemberInfo)
GetTypeCodeImpl()

Retourne le code du type sous-jacent de cette instance Type.

(Hérité de Type)
HasElementTypeImpl()

En cas de substitution dans une classe dérivée, implémente la propriété HasElementType et détermine si le Type actuel englobe ou se réfère à un autre type ; c'est-à-dire si le Type actuel est un tableau ou un pointeur ou encore s'il est passé par référence.

(Hérité de Type)
HasSameMetadataDefinitionAs(MemberInfo) (Hérité de MemberInfo)
InvokeMember(String, BindingFlags, Binder, Object, Object[])

Appelle le membre défini, à l'aide des contraintes de liaison spécifiées et correspondant à la liste d'arguments spécifiée.

(Hérité de Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)

Appelle le membre spécifié, à l'aide des contraintes de liaison spécifiées et correspondant à la liste d'arguments et à la culture spécifiées.

(Hérité de Type)
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])

Appelle le membre spécifié. La méthode à appeler doit être accessible et fournir la correspondance la plus spécifique avec la liste d’arguments spécifiée, sous les contraintes des attributs de binder et d’appel spécifiés.

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

En cas de substitution dans une classe dérivée, appelle le membre défini, à l'aide des contraintes de liaison spécifiées et correspondant à la liste d'arguments, aux modificateurs et à la culture spécifiés.

(Hérité de Type)
IsArrayImpl()

En cas de substitution dans une classe dérivée, implémente la propriété IsArray et détermine si Type est un tableau.

(Hérité de Type)
IsAssignableFrom(Type)

Obtient une valeur qui indique si un objet Type spécifié peut être affecté à cet objet.

IsAssignableFrom(Type) (Hérité de TypeInfo)
IsAssignableFrom(TypeInfo)

Obtient une valeur qui indique si un objet TypeInfo spécifié peut être affecté à cet objet.

IsAssignableFrom(TypeInfo)

Retourne une valeur qui indique si le type spécifié peut être affecté au type actuel.

(Hérité de TypeInfo)
IsAssignableTo(Type)

Détermine si un type actuel peut être affecté à une variable du type targetType spécifié.

(Hérité de Type)
IsByRefImpl()

En cas de substitution dans une classe dérivée, implémente la propriété IsByRef et détermine si le Type est passé par référence.

(Hérité de Type)
IsCOMObjectImpl()

En cas de substitution dans une classe dérivée, implémente la propriété IsCOMObject et détermine si le Type est un objet COM.

(Hérité de Type)
IsContextfulImpl()

Implémente la propriété IsContextful et détermine si Type peut être hébergé dans un contexte.

(Hérité de Type)
IsCreated()

Retourne une valeur qui indique si le type dynamique actuel a été créé.

IsDefined(Type, Boolean)

Détermine si un attribut personnalisé est appliqué au type actuel.

IsDefined(Type, Boolean)

En cas de substitution dans une classe dérivée, indique si un ou plusieurs attributs du type spécifié ou de ses types dérivés sont appliqués à ce membre.

(Hérité de MemberInfo)
IsEnumDefined(Object)

Retourne une valeur qui indique si la valeur spécifiée existe dans le type énumération actuel.

(Hérité de Type)
IsEnumDefined(Object) (Hérité de TypeInfo)
IsEquivalentTo(Type)

Détermine si deux types COM ont la même identité et prennent en charge l'équivalence de type.

(Hérité de Type)
IsEquivalentTo(Type) (Hérité de TypeInfo)
IsInstanceOfType(Object)

Détermine si l'objet spécifié est une instance du Type actuel.

(Hérité de Type)
IsInstanceOfType(Object) (Hérité de TypeInfo)
IsMarshalByRefImpl()

Implémente la propriété IsMarshalByRef et détermine si le Type est marshalé par référence.

(Hérité de Type)
IsPointerImpl()

En cas de substitution dans une classe dérivée, implémente la propriété IsPointer et détermine si le Type est un pointeur.

(Hérité de Type)
IsPrimitiveImpl()

En cas de substitution dans une classe dérivée, implémente la propriété IsPrimitive et détermine si Type est l'un des types primitifs.

(Hérité de Type)
IsSubclassOf(Type)

Détermine si ce type est dérivé d’un type spécifié.

IsSubclassOf(Type) (Hérité de TypeInfo)
IsValueTypeImpl()

Implémente la propriété IsValueType et détermine si le Type est un type valeur, c'est-à-dire ni une classe ni une interface.

(Hérité de Type)
MakeArrayType()

Retourne un objet Type qui représente un tableau unidimensionnel du type actuel, avec une limite inférieure de zéro.

MakeArrayType()

Retourne un objet Type qui représente un tableau unidimensionnel du type actuel, avec une limite inférieure de zéro.

(Hérité de Type)
MakeArrayType() (Hérité de TypeInfo)
MakeArrayType(Int32)

Retourne un objet Type qui représente un tableau du type actuel, avec le nombre spécifié de dimensions.

MakeArrayType(Int32)

Retourne un objet Type qui représente un tableau du type actuel, avec le nombre spécifié de dimensions.

(Hérité de Type)
MakeArrayType(Int32) (Hérité de TypeInfo)
MakeByRefType()

Retourne un objet Type qui représente le type actuel quand il est passé en tant que paramètre ref (ByRef en Visual Basic).

MakeByRefType()

Retourne un objet Type qui représente le type actuel quand il est passé en tant que paramètre ref (paramètre ByRef en Visual Basic).

(Hérité de Type)
MakeByRefType() (Hérité de TypeInfo)
MakeGenericType(Type[])

Substitue les éléments d’un tableau de types aux paramètres de type de la définition du type générique actuel et retourne le type construit résultant.

MakeGenericType(Type[])

Substitue les éléments d'un tableau de types aux paramètres de type de la définition du type générique actuel et retourne un objet Type qui représente le type construit résultant.

(Hérité de Type)
MakeGenericType(Type[]) (Hérité de TypeInfo)
MakePointerType()

Retourne un objet Type qui représente le type d’un pointeur non managé vers le type actuel.

MakePointerType()

Retourne un objet Type qui représente un pointeur vers le type actuel.

(Hérité de Type)
MakePointerType() (Hérité de TypeInfo)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
SetCustomAttribute(ConstructorInfo, Byte[])

Définit un attribut personnalisé à l’aide d’un objet blob d’attribut personnalisé spécifié.

SetCustomAttribute(CustomAttributeBuilder)

Définit un attribut personnalisé à l’aide d’un générateur d’attributs personnalisés.

SetParent(Type)

Définit le type de base du type actuellement en cours d’élaboration.

ToString()

Retourne le nom du type sans l’espace de noms.

ToString()

Retourne String représentant le nom du Type actuel.

(Hérité de Type)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de MemberInfo)
_MemberInfo.GetType()

Obtient un objet Type représentant la classe MemberInfo.

(Hérité de MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.

(Hérité de MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de MemberInfo)
_Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Type)
_Type.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.

(Hérité de Type)
_Type.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Type)
_Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Type)
_TypeBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

_TypeBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.

_TypeBuilder.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

_TypeBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

ICustomAttributeProvider.GetCustomAttributes(Boolean)

Retourne un tableau de tous les attributs personnalisés définis sur ce membre, en dehors des attributs nommés, ou un tableau vide s’il n’y a aucun attribut personnalisé.

(Hérité de MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Retourne un tableau d’attributs personnalisés définis sur ce membre, identifiés par type, ou un tableau vide s’il n’y a aucun attribut personnalisé de ce type.

(Hérité de MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Indique si une ou plusieurs instances de attributeType sont définies sur ce membre.

(Hérité de MemberInfo)
IReflectableType.GetTypeInfo()

Retourne une représentation du type actuel en tant qu'objet TypeInfo.

(Hérité de TypeInfo)

Méthodes d’extension

GetCustomAttribute(MemberInfo, Type)

Récupère un attribut personnalisé d'un type spécifié qui est appliqué à un membre spécifié.

GetCustomAttribute(MemberInfo, Type, Boolean)

Récupère un attribut personnalisé d'un type spécifié qui est appliqué à un membre spécifié, et inspecte éventuellement les ancêtres de ce membre.

GetCustomAttribute<T>(MemberInfo)

Récupère un attribut personnalisé d'un type spécifié qui est appliqué à un membre spécifié.

GetCustomAttribute<T>(MemberInfo, Boolean)

Récupère un attribut personnalisé d'un type spécifié qui est appliqué à un membre spécifié, et inspecte éventuellement les ancêtres de ce membre.

GetCustomAttributes(MemberInfo)

Récupère une collection d'attributs personnalisés qui sont appliqués à un membre spécifié.

GetCustomAttributes(MemberInfo, Boolean)

Récupère une collection d'attributs personnalisés qui sont appliqués à un membre spécifié, et inspecte éventuellement les ancêtres de ce membre.

GetCustomAttributes(MemberInfo, Type)

Extrait une collection d'attributs personnalisés d'un type spécifié qui sont appliqués à un membre spécifié.

GetCustomAttributes(MemberInfo, Type, Boolean)

Extrait une collection d'attributs personnalisés d'un type spécifié qui sont appliqués à un membre spécifié, et inspecte éventuellement les ancêtres de ce membre.

GetCustomAttributes<T>(MemberInfo)

Extrait une collection d'attributs personnalisés d'un type spécifié qui sont appliqués à un membre spécifié.

GetCustomAttributes<T>(MemberInfo, Boolean)

Extrait une collection d'attributs personnalisés d'un type spécifié qui sont appliqués à un membre spécifié, et inspecte éventuellement les ancêtres de ce membre.

IsDefined(MemberInfo, Type)

Indique si des attributs personnalisés d'un type spécifié sont appliqués à un membre spécifié.

IsDefined(MemberInfo, Type, Boolean)

Indique si les attributs personnalisés d'un type spécifié sont appliqués à un membre spécifié, et, éventuellement, appliqués à ses ancêtres.

GetTypeInfo(Type)

Retourne la représentation TypeInfo du type spécifié.

GetMetadataToken(MemberInfo)

Obtient un jeton de métadonnées pour le membre donné, s’il est disponible.

HasMetadataToken(MemberInfo)

Retourne une valeur qui indique si un jeton de métadonnées est disponible pour le membre spécifié.

GetRuntimeEvent(Type, String)

Récupère un objet qui représente l’événement spécifié.

GetRuntimeEvents(Type)

Récupère une collection qui représente tous les événements définis sur un type spécifié.

GetRuntimeField(Type, String)

Récupère un objet qui représente un champ spécifié.

GetRuntimeFields(Type)

Récupère une collection qui représente tous les événements définis sur un type spécifié.

GetRuntimeInterfaceMap(TypeInfo, Type)

Retourne un mappage d’interface pour le type et l’interface spécifiés.

GetRuntimeMethod(Type, String, Type[])

Récupère un objet qui représente une méthode spécifiée.

GetRuntimeMethods(Type)

Récupère une collection qui représente toutes les méthodes définies sur un type spécifié.

GetRuntimeProperties(Type)

Récupère une collection qui représente toutes les méthodes définies sur un type spécifié.

GetRuntimeProperty(Type, String)

Récupère un objet qui représente une propriété spécifiée.

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)

S’applique à

Voir aussi