TypeBuilder Класс

Определение

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

public ref class TypeBuilder abstract : System::Reflection::TypeInfo
public ref class TypeBuilder sealed : Type
public ref class TypeBuilder sealed : System::Reflection::TypeInfo
public ref class TypeBuilder sealed : Type, System::Runtime::InteropServices::_TypeBuilder
public ref class TypeBuilder sealed : System::Reflection::TypeInfo, System::Runtime::InteropServices::_TypeBuilder
public abstract class TypeBuilder : System.Reflection.TypeInfo
public sealed class TypeBuilder : Type
public sealed class TypeBuilder : System.Reflection.TypeInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : System.Reflection.TypeInfo, System.Runtime.InteropServices._TypeBuilder
type TypeBuilder = class
    inherit TypeInfo
type TypeBuilder = class
    inherit Type
[<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 MustInherit Class TypeBuilder
Inherits TypeInfo
Public NotInheritable Class TypeBuilder
Inherits Type
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Public NotInheritable Class TypeBuilder
Inherits Type
Implements _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Implements _TypeBuilder
Наследование
TypeBuilder
Наследование
Наследование
TypeBuilder
Атрибуты
Реализации

Примеры

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

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

Извлекает базовый тип этого типа.

ContainsGenericParameters

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

ContainsGenericParameters

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DeclaringType

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

FullName

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

GenericParameterAttributes

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

GenericParameterPosition

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

GenericTypeArguments

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

GenericTypeArguments

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

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

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

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

Извлекает GUID этого типа.

HasElementType

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IsClass

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

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

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

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

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

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

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

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

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

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

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

IsContextful

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

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

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

IsEnum

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

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

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

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

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

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

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

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

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

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

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

IsGenericType

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

IsGenericTypeDefinition

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

IsGenericTypeParameter

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IsSecuritySafeCritical

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

IsSecurityTransparent

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

IsSerializable

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

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

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

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

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

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

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

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

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

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

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

IsTypeDefinition

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

IsUnicodeClass

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

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

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

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

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

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

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

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

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

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

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

IsVariableBoundArray

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

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

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

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

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

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

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

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

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

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

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

MetadataToken

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

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

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

Name

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

Namespace

Извлекает пространство имен, в котором это TypeBuilder определено.

PackingSize

Извлекает размер упаковки этого типа.

PackingSizeCore

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

ReflectedType

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

Size

Извлекает общий размер типа.

SizeCore

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

StructLayoutAttribute

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

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

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

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

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

TypeInitializer

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

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

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

(Унаследовано от Type)
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[], Type[][], Type[][])

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

DefineConstructor(MethodAttributes, CallingConventions, 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, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

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

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

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

DefineMethod(String, MethodAttributes, CallingConventions)

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

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

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

DefineMethod(String, MethodAttributes)

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

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

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

DefineMethodOverride(MethodInfo, MethodInfo)

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

DefineMethodOverrideCore(MethodInfo, MethodInfo)

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

DefineNestedType(String, TypeAttributes, Type, Int32)

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

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

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

DefineNestedType(String, TypeAttributes, Type, PackingSize)

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

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

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

DefineNestedType(String, TypeAttributes, Type)

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

DefineNestedType(String, TypeAttributes)

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

DefineNestedType(String)

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

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[], Type[], Type[], Type[][], Type[][])

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

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

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

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

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

DefineProperty(String, PropertyAttributes, 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GetArrayRank()

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

(Унаследовано от Type)
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[])

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

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

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

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

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

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

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

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

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

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

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

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

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

GetConstructors(BindingFlags)

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

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

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

GetCustomAttributes(Type, Boolean)

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

GetCustomAttributesData()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вызов этого метода всегда вызывает.NotSupportedException

GetEnumName(Object)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GetEvent(String, BindingFlags)

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

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

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

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

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

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

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

GetEvents()

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

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

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

GetEvents(BindingFlags)

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

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

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

GetField(String, BindingFlags)

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

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

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

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

Ищет общедоступное поле с указанным именем.

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

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

GetFields()

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

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

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

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

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

GetFields(BindingFlags)

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

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

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

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

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

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

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

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

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

GetGenericArguments()

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

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

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

GetGenericParameterConstraints()

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

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

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

GetHashCode()

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

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

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

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

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

GetInterface(String, Boolean)

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

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

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

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

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

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

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

GetInterfaces()

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

GetInterfaces()

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

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

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

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

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

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

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

GetMember(String, MemberTypes, BindingFlags)

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

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

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

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

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

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

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

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

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

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

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

GetMembers(BindingFlags)

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

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

MemberInfo Ищет текущийType, соответствующий указанномуMemberInfo.

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

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

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

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

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

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

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

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

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

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

(Унаследовано от 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[], ParameterModifier[])

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Унаследовано от Type)
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()

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

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

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

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

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

GetMethods(BindingFlags)

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

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

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

GetNestedType(String, BindingFlags)

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

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

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

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

Ищет общедоступный вложенный тип с указанным именем.

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

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

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

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

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

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

GetNestedTypes(BindingFlags)

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

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

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

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

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

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

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

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

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

GetProperties(BindingFlags)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ищет общедоступное свойство с указанным именем.

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

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

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

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

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

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

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

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

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

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

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

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

HasElementTypeImpl()

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

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

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

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

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

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

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

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

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

(Унаследовано от Type)
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)

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

IsEnumDefined(Object)

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

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

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

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

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

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

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

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

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

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

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

(Унаследовано от Type)
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(Int32)

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

MakeByRefType()

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

MakeFunctionPointerType(Type[], Boolean)

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

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

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

MakePointerType()

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

MemberwiseClone()

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

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

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

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)

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

Имя Описание
GetConstructor(Type, Type[])

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

GetConstructors(Type, BindingFlags)

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

GetConstructors(Type)

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

GetCustomAttribute(MemberInfo, Type, Boolean)

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

GetCustomAttribute(MemberInfo, Type)

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

GetCustomAttribute<T>(MemberInfo, Boolean)

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

GetCustomAttribute<T>(MemberInfo)

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

GetCustomAttributes(MemberInfo, Boolean)

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

GetCustomAttributes(MemberInfo, Type, Boolean)

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

GetCustomAttributes(MemberInfo, Type)

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

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes<T>(MemberInfo, Boolean)

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

GetCustomAttributes<T>(MemberInfo)

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

GetDefaultMembers(Type)

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

GetEvent(Type, String, BindingFlags)

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

GetEvent(Type, String)

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

GetEvents(Type, BindingFlags)

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

GetEvents(Type)

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

GetField(Type, String, BindingFlags)

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

GetField(Type, String)

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

GetFields(Type, BindingFlags)

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

GetFields(Type)

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

GetGenericArguments(Type)

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

GetInterfaces(Type)

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

GetMember(Type, String, BindingFlags)

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

GetMember(Type, String)

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

GetMembers(Type, BindingFlags)

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

GetMembers(Type)

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

GetMetadataToken(MemberInfo)

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

GetMethod(Type, String, BindingFlags)

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

GetMethod(Type, String, Type[])

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

GetMethods(Type, BindingFlags)

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

GetMethods(Type)

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

GetNestedTypes(Type, BindingFlags)

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

GetProperties(Type, BindingFlags)

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

GetProperties(Type)

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

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

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

GetProperty(Type, String, Type)

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

GetProperty(Type, String)

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

GetRuntimeEvent(Type, String)

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

GetRuntimeEvents(Type)

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

GetRuntimeField(Type, String)

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

GetRuntimeFields(Type)

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

GetRuntimeInterfaceMap(TypeInfo, Type)

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

GetRuntimeMethod(Type, String, Type[])

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

GetRuntimeMethods(Type)

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

GetRuntimeProperties(Type)

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

GetRuntimeProperty(Type, String)

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

GetTypeInfo(Type)

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

HasMetadataToken(MemberInfo)

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

IsAssignableFrom(Type, Type)

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

IsDefined(MemberInfo, Type, Boolean)

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

IsDefined(MemberInfo, Type)

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

IsInstanceOfType(Type, Object)

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

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

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