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
- Наследование
- Наследование
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода показано, как определить и использовать динамическую сборку. Пример сборки содержит один тип, 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 |
Возвращает значение, указывающее, выбран |
| IsArray |
Определяет и создает новые экземпляры классов во время выполнения. (Унаследовано от TypeInfo) |
| IsArray |
Возвращает значение, указывающее, является ли тип массивом. (Унаследовано от Type) |
| IsAutoClass |
Определяет и создает новые экземпляры классов во время выполнения. (Унаследовано от TypeInfo) |
| IsAutoClass |
Возвращает значение, указывающее, выбран |
| 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 |
Возвращает значение, указывающее, выбран |
| 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 |
Извлекает пространство имен, в котором это |
| PackingSize |
Извлекает размер упаковки этого типа. |
| PackingSizeCore |
При переопределении в производном классе получает размер упаковки этого типа. |
| ReflectedType |
Возвращает тип, используемый для получения этого типа. |
| Size |
Извлекает общий размер типа. |
| SizeCore |
При переопределении в производном классе получает общий размер типа. |
| StructLayoutAttribute |
Определяет и создает новые экземпляры классов во время выполнения. (Унаследовано от TypeInfo) |
| StructLayoutAttribute |
Возвращает объект StructLayoutAttribute , описывающий макет текущего типа. (Унаследовано от Type) |
| TypeHandle |
Не поддерживается в динамических модулях. |
| TypeInitializer |
Определяет и создает новые экземпляры классов во время выполнения. (Унаследовано от TypeInfo) |
| TypeInitializer |
Возвращает инициализатор для типа. (Унаследовано от Type) |
| TypeToken |
Возвращает маркер типа этого типа. |
| UnderlyingSystemType |
Возвращает базовый тип системы для этого |
| UnderlyingSystemType |
Определяет и создает новые экземпляры классов во время выполнения. (Унаследовано от TypeInfo) |
Методы
| Имя | Описание |
|---|---|
| AddDeclarativeSecurity(SecurityAction, PermissionSet) |
Добавляет декларативную безопасность для этого типа. |
| AddInterfaceImplementation(Type) |
Добавляет интерфейс, реализующий этот тип. |
| AddInterfaceImplementationCore(Type) |
При переопределении в производном классе добавляет интерфейс, реализующий этот тип. |
| AsType() |
Возвращает текущий Type тип в качестве объекта. (Унаследовано от TypeInfo) |
| 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) |
Определяет |
| DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet) |
Определяет |
| DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][], CallingConvention, CharSet) |
Определяет |
| 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) |
Определяет неинициализированное поле данных в |
| DefineUninitializedDataCore(String, Int32, FieldAttributes) |
При переопределении в производном классе определяет неинициализированное поле данных в |
| 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) |
Определяет, можно ли назначить текущий тип переменной указанной. |
| 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, представляющий текущий тип при передаче в качестве параметра |
| 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) |
Указывает, определен ли один или несколько экземпляров |
| 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) |
Определяет и создает новые экземпляры классов во время выполнения. |