Поделиться через


TypeBuilder Класс

Определение

Определяет и создает новые экземпляры классов во время выполнения.

public ref class TypeBuilder sealed : Type
public ref class TypeBuilder sealed : System::Reflection::TypeInfo
public ref class TypeBuilder abstract : 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 sealed class TypeBuilder : Type
public sealed class TypeBuilder : System.Reflection.TypeInfo
public abstract 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
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 MustInherit Class TypeBuilder
Inherits TypeInfo
Public NotInheritable Class TypeBuilder
Inherits Type
Implements _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Implements _TypeBuilder
Наследование
TypeBuilder
Наследование
TypeBuilder
Наследование
Атрибуты
Реализации

Примеры

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

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

void main()
{
    // This code creates an assembly that 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 = 
        AssemblyBuilder::DefineDynamicAssembly(
            aName, 
            AssemblyBuilderAccess::Run);

    // The module name is usually the same as the assembly name
    ModuleBuilder^ mb = 
        ab->DefineDynamicModule(aName->Name);
      
    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();

    // 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()
    {
        // This code creates an assembly that 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;
            }
        }
        */

        var aName = new AssemblyName("DynamicAssemblyExample");
        AssemblyBuilder ab =
            AssemblyBuilder.DefineDynamicAssembly(
                aName,
                AssemblyBuilderAccess.Run);

        // The module name is usually the same as the assembly name.
        ModuleBuilder mb = ab.DefineDynamicModule(aName.Name ?? "DynamicAssemblyExample");

        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);
        ConstructorInfo? ci = typeof(object).GetConstructor(Type.EmptyTypes);
        ctor1IL.Emit(OpCodes.Call, ci!);
        // 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();

        // 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 = null;
        if (t is not null)
            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 = null;
        if (t is not null)
            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()

        ' This code creates an assembly that 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 = _
            AssemblyBuilder.DefineDynamicAssembly( _
                aName, _
                AssemblyBuilderAccess.Run)

        ' The module name is usually the same as the assembly name.
        Dim mb As ModuleBuilder = ab.DefineDynamicModule( _
            aName.Name)
      
        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()

        ' 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

В следующем примере кода показано, как динамически создать тип с помощью 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

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для TypeBuilder.

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

TypeBuilder()

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

Поля

UnspecifiedTypeSize

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

Свойства

Assembly

Извлекает динамическую сборку, которая содержит определение данного типа.

AssemblyQualifiedName

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

Attributes

Определяет и создает новые экземпляры классов во время выполнения.

Attributes

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Возвращает базовый тип этого типа.

ContainsGenericParameters

Определяет и создает новые экземпляры классов во время выполнения.

ContainsGenericParameters

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DeclaringMethod

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

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

Возвращает тип, объявивший этот тип.

FullName

Извлекает полный путь данного типа.

GenericParameterAttributes

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

GenericParameterAttributes

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

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

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

GenericParameterPosition

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

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

Определяет и создает новые экземпляры классов во время выполнения.

GenericTypeArguments

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Получает идентификатор GUID этого типа.

HasElementType

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

IsByRefLike

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

IsConstructedGenericType

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

IsEnum

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

IsGenericParameter

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

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

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

IsGenericType

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

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

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

IsGenericTypeDefinition

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

IsSecurityCritical

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

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

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

IsSecuritySafeCritical

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

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

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

IsSecurityTransparent

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Определяет и создает новые экземпляры классов во время выполнения.

IsSZArray

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

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

Определяет и создает новые экземпляры классов во время выполнения.

IsTypeDefinition

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Определяет и создает новые экземпляры классов во время выполнения.

IsVariableBoundArray

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

MetadataToken

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

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

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

Name

Извлекает имя данного типа.

Namespace

Получает пространство имен, в котором определен этот объект TypeBuilder.

PackingSize

Получает размер упаковки данного типа.

PackingSizeCore

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

ReflectedType

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

ReflectedType

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

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

Получает общий размер типа.

SizeCore

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

StructLayoutAttribute

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Не поддерживается в динамических модулях.

TypeInitializer

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Возвращает токен типа этого типа.

UnderlyingSystemType

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

UnderlyingSystemType

Определяет и создает новые экземпляры классов во время выполнения.

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

Методы

AddDeclarativeSecurity(SecurityAction, PermissionSet)

Добавляет декларативную безопасность в этот тип.

AddInterfaceImplementation(Type)

Добавляет интерфейс, реализуемый данным типом.

AddInterfaceImplementationCore(Type)

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

AsType()

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

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

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

CreateTypeInfo()

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

CreateTypeInfoCore()

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

DefineConstructor(MethodAttributes, CallingConventions, Type[])

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

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

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

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

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

DefineDefaultConstructor(MethodAttributes)

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

DefineDefaultConstructorCore(MethodAttributes)

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

DefineEvent(String, EventAttributes, Type)

Добавляет новое событие в тип с заданным именем, атрибутами и типом события.

DefineEventCore(String, EventAttributes, Type)

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

DefineField(String, Type, FieldAttributes)

Добавляет новое поле в тип с заданным именем, атрибутами и типом поля.

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

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

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

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

DefineGenericParameters(String[])

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

DefineGenericParametersCore(String[])

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

DefineInitializedData(String, Byte[], FieldAttributes)

Определяет инициализированное поле данных в разделе .sdata переносимого исполняемого (PE) файла.

DefineInitializedDataCore(String, Byte[], FieldAttributes)

При переопределении в производном классе определяет поле инициализированных данных в разделе SDATA переносимого исполняемого файла (PE).

DefineMethod(String, MethodAttributes)

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

DefineMethod(String, MethodAttributes, CallingConventions)

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

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

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

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

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

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

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

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

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

DefineMethodOverride(MethodInfo, MethodInfo)

Задает тело данного метода, реализующее объявление данного метода, возможно, с другим именем.

DefineMethodOverrideCore(MethodInfo, MethodInfo)

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

DefineNestedType(String)

Определяет вложенный тип с заданным именем.

DefineNestedType(String, TypeAttributes)

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

DefineNestedType(String, TypeAttributes, Type)

Определяет вложенный тип на основе его имени, атрибутов и типа, который он расширяет.

DefineNestedType(String, TypeAttributes, Type, Int32)

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

DefineNestedType(String, TypeAttributes, Type, PackingSize)

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

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

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

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

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

DefineNestedTypeCore(String, TypeAttributes, Type, Type[], PackingSize, Int32)

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

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

Определяет метод PInvoke с учетом его имени, имени библиотеки DLL, в которой определен метод, атрибутов метода, соглашения о вызове метода, возвращаемого типа метода, типов параметров метода и флагов PInvoke.

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

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

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

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

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

При переопределении в производном классе определяет метод PInvoke с указанным именем, именем БИБЛИОТЕКи DLL, именем точки входа, атрибутами, соглашением о вызове, типом возвращаемого значения, типами параметров, флагами PInvoke и настраиваемыми модификаторами для параметров и типа возвращаемого значения.

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

Добавляет новое свойство в тип с заданным именем, атрибутами, соглашением о вызове и сигнатурой свойства.

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

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

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

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

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

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

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

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

DefineTypeInitializer()

Определяет инициализатор для этого типа.

DefineTypeInitializerCore()

При переопределении в производном классе определяет инициализатор для этого типа.

DefineUninitializedData(String, Int32, FieldAttributes)

Определяет неинициализированное поле данных в разделе .sdata переносимого исполняемого (PE) файла.

DefineUninitializedDataCore(String, Int32, FieldAttributes)

При переопределении в производном классе определяет неинициализированное поле данных в .sdata разделе переносимого исполняемого файла (PE).

Equals(Object)

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

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Определяет и создает новые экземпляры классов во время выполнения.

GetArrayRank()

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetAttributeFlagsImpl()

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

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

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

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

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

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

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

(Унаследовано от Type)
GetConstructor(Type, ConstructorInfo)

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

GetConstructor(Type[])

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetConstructors(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetCustomAttributes(Boolean)

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

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

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

GetCustomAttributes(Type, Boolean)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

При вызове этого метода всегда возникает исключение NotSupportedException.

GetEnumName(Object)

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetEvent(String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetEvents()

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetEvents(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetField(String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

(Унаследовано от TypeInfo)
GetField(Type, FieldInfo)

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

GetFields()

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetFields(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

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

GetGenericArguments()

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

Определяет и создает новые экземпляры классов во время выполнения.

GetGenericParameterConstraints()

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetGenericTypeDefinition()

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

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

Возвращает хэш-код данного экземпляра.

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

Возвращает хэш-код данного экземпляра.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetInterface(String, Boolean)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetInterfaces()

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

GetInterfaces()

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetMember(String, MemberTypes, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetMembers(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

(Унаследовано от TypeInfo)
GetMethod(Type, MethodInfo)

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

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

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

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

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

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetMethods(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetNestedType(String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetNestedTypes(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

GetProperties(BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HasElementTypeImpl()

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

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

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

IsArrayImpl()

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

IsArrayImpl()

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

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

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

IsAssignableFrom(Type)

Определяет и создает новые экземпляры классов во время выполнения.

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

Получает значение, указывающее, может ли заданный объект TypeInfo быть назначен этому объекту.

IsAssignableTo(Type)

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

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

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

IsByRefImpl()

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

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

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

IsCOMObjectImpl()

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

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

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

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

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

IsCreatedCore()

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

IsDefined(Type, Boolean)

Определяет, применяется ли настраиваемый атрибут к текущему типу.

IsDefined(Type, Boolean)

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

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

IsPointerImpl()

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

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

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

IsPrimitiveImpl()

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

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

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

IsSubclassOf(Type)

Определяет и создает новые экземпляры классов во время выполнения.

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

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

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

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

MakeArrayType()

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

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

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

MakeArrayType(Int32)

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

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

Возвращает объект Type, который представляет текущий тип при передаче в качестве параметра ref (параметра ByRef в Visual Basic).

MakeByRefType()

Возвращает объект Type, который представляет текущий тип при передаче в качестве параметра ref (параметра ByRef в Visual Basic).

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

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

MakeGenericType(Type[])

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

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

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

MakePointerType()

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

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

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

(Унаследовано от Object)
SetCustomAttribute(ConstructorInfo, Byte[])

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

SetCustomAttribute(CustomAttributeBuilder)

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

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

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

SetParent(Type)

Задает базовый тип конструируемого в настоящий момент типа.

SetParentCore(Type)

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

ToString()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

_TypeBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

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

_TypeBuilder.GetTypeInfoCount(UInt32)

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

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

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

ICustomAttributeProvider.GetCustomAttributes(Boolean)

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

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

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

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

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

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

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

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

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

GetCustomAttribute(MemberInfo, Type)

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

GetCustomAttribute(MemberInfo, Type, Boolean)

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

GetCustomAttribute<T>(MemberInfo)

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

GetCustomAttribute<T>(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo, Type)

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

GetCustomAttributes(MemberInfo, Type, Boolean)

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

GetCustomAttributes<T>(MemberInfo)

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

GetCustomAttributes<T>(MemberInfo, Boolean)

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

IsDefined(MemberInfo, Type)

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

IsDefined(MemberInfo, Type, Boolean)

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

GetTypeInfo(Type)

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

GetMetadataToken(MemberInfo)

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

HasMetadataToken(MemberInfo)

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

GetRuntimeEvent(Type, String)

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

GetRuntimeEvents(Type)

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

GetRuntimeField(Type, String)

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

GetRuntimeFields(Type)

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

GetRuntimeInterfaceMap(TypeInfo, Type)

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

GetRuntimeMethod(Type, String, Type[])

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

GetRuntimeMethods(Type)

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

GetRuntimeProperties(Type)

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

GetRuntimeProperty(Type, String)

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

GetConstructor(Type, Type[])

Определяет и создает новые экземпляры классов во время выполнения.

GetConstructors(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetConstructors(Type, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetFields(Type, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetGenericArguments(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetInterfaces(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetMember(Type, String)

Определяет и создает новые экземпляры классов во время выполнения.

GetMember(Type, String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetMembers(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetMethods(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetNestedType(Type, String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetProperties(Type)

Определяет и создает новые экземпляры классов во время выполнения.

GetProperties(Type, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetProperty(Type, String, BindingFlags)

Определяет и создает новые экземпляры классов во время выполнения.

GetProperty(Type, String, Type)

Определяет и создает новые экземпляры классов во время выполнения.

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

Определяет и создает новые экземпляры классов во время выполнения.

IsAssignableFrom(Type, Type)

Определяет и создает новые экземпляры классов во время выполнения.

IsInstanceOfType(Type, Object)

Определяет и создает новые экземпляры классов во время выполнения.

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

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