TypeBuilder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert und erstellt neue Instanzen von Klassen während der Laufzeit.
public ref class TypeBuilder sealed : Type, System::Runtime::InteropServices::_TypeBuilder
public ref class TypeBuilder sealed : System::Reflection::TypeInfo, System::Runtime::InteropServices::_TypeBuilder
public ref class TypeBuilder sealed : Type
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : Type, System.Runtime.InteropServices._TypeBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TypeBuilder : System.Reflection.TypeInfo, System.Runtime.InteropServices._TypeBuilder
public sealed class TypeBuilder : 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
type TypeBuilder = class
inherit Type
Public NotInheritable Class TypeBuilder
Inherits Type
Implements _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits TypeInfo
Implements _TypeBuilder
Public NotInheritable Class TypeBuilder
Inherits Type
- Vererbung
- Vererbung
- Attribute
- Implementiert
Beispiele
Das folgende Codebeispiel zeigt, wie eine dynamische Assembly definiert und verwendet wird. Die Beispielassembly enthält einen Typ, MyDynamicTypeder ein privates Feld enthält, eine Eigenschaft, die das private Feld abruft und festlegt, Konstruktoren, die das private Feld initialisieren, und eine Methode, die eine vom Benutzer angegebene Zahl mit dem Wert des privaten Felds multipliziert und das Ergebnis zurückgibt.
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
Im folgenden Codebeispiel wird veranschaulicht, wie sie einen Typ dynamisch mithilfe von 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
Hinweise
Weitere Informationen zu dieser API finden Sie in den ergänzenden API-Hinweisen für TypeBuilder.
Felder
| Name | Beschreibung |
|---|---|
| UnspecifiedTypeSize |
Stellt die Gesamtgröße für den Typ nicht fest. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Assembly |
Ruft die dynamische Assembly ab, die diese Typdefinition enthält. |
| AssemblyQualifiedName |
Gibt den vollständigen Namen dieses Typs zurück, der durch den Anzeigenamen der Assembly qualifiziert ist. |
| Attributes |
Ruft die Attribute ab, die der Type. (Geerbt von Type) |
| BaseType |
Ruft den Basistyp dieses Typs ab. |
| ContainsGenericParameters |
Ruft einen Wert ab, der angibt, ob das aktuelle Type Objekt Typparameter enthält, die nicht durch bestimmte Typen ersetzt wurden. (Geerbt von Type) |
| CustomAttributes |
Ruft eine Auflistung ab, die die benutzerdefinierten Attribute dieses Elements enthält. (Geerbt von MemberInfo) |
| DeclaredConstructors |
Ruft eine Auflistung der vom aktuellen Typ deklarierten Konstruktoren ab. (Geerbt von TypeInfo) |
| DeclaredEvents |
Ruft eine Auflistung der vom aktuellen Typ definierten Ereignisse ab. (Geerbt von TypeInfo) |
| DeclaredFields |
Ruft eine Auflistung der vom aktuellen Typ definierten Felder ab. (Geerbt von TypeInfo) |
| DeclaredMembers |
Ruft eine Auflistung der vom aktuellen Typ definierten Elemente ab. (Geerbt von TypeInfo) |
| DeclaredMethods |
Ruft eine Auflistung der vom aktuellen Typ definierten Methoden ab. (Geerbt von TypeInfo) |
| DeclaredNestedTypes |
Ruft eine Auflistung der geschachtelten Typen ab, die vom aktuellen Typ definiert sind. (Geerbt von TypeInfo) |
| DeclaredProperties |
Ruft eine Auflistung der vom aktuellen Typ definierten Eigenschaften ab. (Geerbt von TypeInfo) |
| DeclaringMethod |
Ruft die Methode ab, die den aktuellen generischen Typparameter deklariert hat. |
| DeclaringType |
Gibt den Typ zurück, der diesen Typ deklariert hat. |
| FullName |
Ruft den vollständigen Pfad dieses Typs ab. |
| GenericParameterAttributes |
Ruft einen Wert ab, der die Kovarianz und spezielle Einschränkungen des aktuellen generischen Typparameters angibt. |
| GenericParameterPosition |
Ruft die Position eines Typparameters in der Typparameterliste des generischen Typs ab, der den Parameter deklariert hat. |
| GenericTypeArguments |
Ruft ein Array der generischen Typargumente für diesen Typ ab. (Geerbt von Type) |
| GenericTypeParameters |
Ruft ein Array der generischen Typparameter der aktuellen Instanz ab. (Geerbt von TypeInfo) |
| GUID |
Ruft die GUID dieses Typs ab. |
| HasElementType |
Ruft einen Wert ab, der angibt, ob der aktuelle Type Typ einschließt oder auf einen anderen Typ verweist; d. h., ob es sich bei dem aktuellen Type Umschlag um ein Array, einen Zeiger oder um einen Verweis handelt. (Geerbt von Type) |
| ImplementedInterfaces |
Ruft eine Auflistung der vom aktuellen Typ implementierten Schnittstellen ab. (Geerbt von TypeInfo) |
| IsAbstract |
Ruft einen Wert ab, der angibt, ob die Type abstrahiert ist und überschrieben werden muss. (Geerbt von Type) |
| IsAnsiClass |
Ruft einen Wert ab, der angibt, ob das Zeichenfolgenformat-Attribut |
| IsArray |
Ruft einen Wert ab, der angibt, ob der Typ ein Array ist. (Geerbt von Type) |
| IsAutoClass |
Ruft einen Wert ab, der angibt, ob das Zeichenfolgenformat-Attribut |
| IsAutoLayout |
Ruft einen Wert ab, der angibt, ob die Felder des aktuellen Typs automatisch von der Common Language Runtime angeordnet werden. (Geerbt von Type) |
| IsByRef |
Ruft einen Wert ab, der angibt, ob der Type Verweis übergeben wird. (Geerbt von Type) |
| IsByRefLike |
Ruft einen Wert ab, der angibt, ob der Typ eine byref-ähnliche Struktur ist. |
| IsClass |
Ruft einen Wert ab, der angibt, ob es Type sich um eine Klasse oder einen Delegaten handelt, d. h. keinen Werttyp oder eine Schnittstelle. (Geerbt von Type) |
| IsCOMObject |
Ruft einen Wert ab, der angibt, ob es Type sich um ein COM-Objekt handelt. (Geerbt von Type) |
| IsConstructedGenericType |
Ruft einen Wert ab, der angibt, ob dieses Objekt einen konstruierten generischen Typ darstellt. |
| IsContextful |
Ruft einen Wert ab, der angibt, ob die Type In einem Kontext gehostet werden kann. (Geerbt von Type) |
| IsEnum |
Ruft einen Wert ab, der angibt, ob der aktuelle Type Wert eine Enumeration darstellt. (Geerbt von Type) |
| IsExplicitLayout |
Ruft einen Wert ab, der angibt, ob die Felder des aktuellen Typs an explizit angegebenen Offsets angeordnet sind. (Geerbt von Type) |
| IsGenericMethodParameter |
Ruft einen Wert ab, der angibt, ob der Aktuelle Type einen Typparameter in der Definition einer generischen Methode darstellt. (Geerbt von Type) |
| IsGenericParameter |
Ruft einen Wert ab, der angibt, ob der aktuelle Typ ein generischer Typparameter ist. |
| IsGenericType |
Ruft einen Wert ab, der angibt, ob der aktuelle Typ ein generischer Typ ist. |
| IsGenericTypeDefinition |
Ruft einen Wert ab, der angibt, ob der Aktuelle TypeBuilder eine generische Typdefinition darstellt, aus der andere generische Typen erstellt werden können. |
| IsGenericTypeParameter |
Ruft einen Wert ab, der angibt, ob der aktuelle Type Parameter einen Typparameter in der Definition eines generischen Typs darstellt. (Geerbt von Type) |
| IsImport |
Ruft einen Wert ab, der angibt, ob das TypeComImportAttribute Attribut angewendet wurde und angibt, dass es aus einer COM-Typbibliothek importiert wurde. (Geerbt von Type) |
| IsInterface |
Ruft einen Wert ab, der angibt, ob es Type sich um eine Schnittstelle handelt, d. h. keine Klasse oder einen Werttyp. (Geerbt von Type) |
| IsLayoutSequential |
Ruft einen Wert ab, der angibt, ob die Felder des aktuellen Typs sequenziell angeordnet sind, in der Reihenfolge, in der sie definiert oder an die Metadaten ausgegeben wurden. (Geerbt von Type) |
| IsMarshalByRef |
Ruft einen Wert ab, der angibt, ob die Type Funktion per Verweis gemarstet wird. (Geerbt von Type) |
| IsNested |
Ruft einen Wert ab, der angibt, ob das aktuelle Type Objekt einen Typ darstellt, dessen Definition in der Definition eines anderen Typs geschachtelt ist. (Geerbt von Type) |
| IsNestedAssembly |
Ruft einen Wert ab, der angibt, ob die Type Schachtelung und nur innerhalb der eigenen Assembly sichtbar ist. (Geerbt von Type) |
| IsNestedFamANDAssem |
Ruft einen Wert ab, der angibt, ob die Type Schachtelung und nur für Klassen sichtbar ist, die sowohl zu ihrer eigenen Familie als auch zu ihrer eigenen Assembly gehören. (Geerbt von Type) |
| IsNestedFamily |
Ruft einen Wert ab, der angibt, ob die Type geschachtelte und nur innerhalb ihrer eigenen Familie sichtbar ist. (Geerbt von Type) |
| IsNestedFamORAssem |
Ruft einen Wert ab, der angibt, ob die Type Schachtelung und nur für Klassen sichtbar ist, die entweder zu ihrer eigenen Familie oder zu ihrer eigenen Assembly gehören. (Geerbt von Type) |
| IsNestedPrivate |
Ruft einen Wert ab, der angibt, ob die Type geschachtelte und deklarierte privat ist. (Geerbt von Type) |
| IsNestedPublic |
Ruft einen Wert ab, der angibt, ob eine Klasse geschachtelt und öffentlich deklariert ist. (Geerbt von Type) |
| IsNotPublic |
Ruft einen Wert ab, der angibt, ob die Type Deklaration nicht öffentlich ist. (Geerbt von Type) |
| IsPointer |
Ruft einen Wert ab, der angibt, ob es Type sich um einen Zeiger handelt. (Geerbt von Type) |
| IsPrimitive |
Ruft einen Wert ab, der angibt, ob es Type sich um einen der Grundtypen handelt. (Geerbt von Type) |
| IsPublic |
Ruft einen Wert ab, der angibt, ob die Type Deklaration öffentlich ist. (Geerbt von Type) |
| IsSealed |
Ruft einen Wert ab, der angibt, ob die Type Deklaration versiegelt ist. (Geerbt von Type) |
| IsSecurityCritical |
Ruft einen Wert ab, der angibt, ob der aktuelle Typ sicherheitskritisch oder sicherheitssicher kritisch ist und daher kritische Vorgänge ausführen kann. |
| IsSecuritySafeCritical |
Ruft einen Wert ab, der angibt, ob der aktuelle Typ sicherheitssicher ist; d. h., ob sie kritische Vorgänge ausführen kann und durch transparenten Code darauf zugegriffen werden kann. |
| IsSecurityTransparent |
Ruft einen Wert ab, der angibt, ob der aktuelle Typ transparent ist und daher keine kritischen Vorgänge ausführen kann. |
| IsSerializable |
Ruft einen Wert ab, der angibt, ob die Type binär serialisierbar ist. (Geerbt von Type) |
| IsSignatureType |
Ruft einen Wert ab, der angibt, ob der Typ ein Signaturtyp ist. (Geerbt von Type) |
| IsSpecialName |
Ruft einen Wert ab, der angibt, ob der Typ einen Namen hat, der eine spezielle Behandlung erfordert. (Geerbt von Type) |
| IsSZArray |
Definiert und erstellt neue Instanzen von Klassen während der Laufzeit. |
| IsTypeDefinition |
Definiert und erstellt neue Instanzen von Klassen während der Laufzeit. |
| IsUnicodeClass |
Ruft einen Wert ab, der angibt, ob das Zeichenfolgenformat-Attribut |
| IsValueType |
Ruft einen Wert ab, der angibt, ob es Type sich um einen Werttyp handelt. (Geerbt von Type) |
| IsVariableBoundArray |
Definiert und erstellt neue Instanzen von Klassen während der Laufzeit. |
| IsVisible |
Ruft einen Wert ab, der angibt, ob der Type Zugriff über Code außerhalb der Assembly möglich ist. (Geerbt von Type) |
| MemberType |
Ruft einen MemberTypes Wert ab, der angibt, dass dieses Element ein Typ oder ein geschachtelter Typ ist. (Geerbt von Type) |
| MetadataToken |
Ruft einen Wert ab, der ein Metadatenelement identifiziert. (Geerbt von MemberInfo) |
| Module |
Ruft das dynamische Modul ab, das diese Typdefinition enthält. |
| Name |
Ruft den Namen dieses Typs ab. |
| Namespace |
Ruft den Namespace ab, in dem dieser |
| PackingSize |
Ruft die Verpackungsgröße dieses Typs ab. |
| ReflectedType |
Gibt den Typ zurück, der zum Abrufen dieses Typs verwendet wurde. |
| Size |
Ruft die Gesamtgröße eines Typs ab. |
| StructLayoutAttribute |
Ruft ein StructLayoutAttribute , das das Layout des aktuellen Typs beschreibt. (Geerbt von Type) |
| TypeHandle |
Wird in dynamischen Modulen nicht unterstützt. |
| TypeInitializer |
Ruft den Initialisierer für den Typ ab. (Geerbt von Type) |
| TypeToken |
Gibt das Typtoken dieses Typs zurück. |
| UnderlyingSystemType |
Gibt den zugrunde liegenden Systemtyp für dieses |
Methoden
| Name | Beschreibung |
|---|---|
| AddDeclarativeSecurity(SecurityAction, PermissionSet) |
Fügt diesem Typ deklarative Sicherheit hinzu. |
| AddInterfaceImplementation(Type) |
Fügt eine Schnittstelle hinzu, die dieser Typ implementiert. |
| AsType() |
Gibt den aktuellen Typ als Type Objekt zurück. (Geerbt von TypeInfo) |
| CreateType() |
Erstellt ein Type Objekt für die Klasse. Nach dem Definieren von Feldern und Methoden für die Klasse |
| CreateTypeInfo() |
Ruft ein TypeInfo Objekt ab, das diesen Typ darstellt. |
| DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][]) |
Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen, Signaturen und benutzerdefinierten Modifizierern hinzu. |
| DefineConstructor(MethodAttributes, CallingConventions, Type[]) |
Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen und Signaturen hinzu. |
| DefineDefaultConstructor(MethodAttributes) |
Definiert den parameterlosen Konstruktor. Der hier definierte Konstruktor ruft einfach den parameterlosen Konstruktor des übergeordneten Elements auf. |
| DefineEvent(String, EventAttributes, Type) |
Fügt dem Typ ein neues Ereignis mit dem angegebenen Namen, Attributen und Ereignistyp hinzu. |
| DefineField(String, Type, FieldAttributes) |
Fügt dem Typ ein neues Feld mit dem angegebenen Namen, Attributen und Feldtyp hinzu. |
| DefineField(String, Type, Type[], Type[], FieldAttributes) |
Fügt dem Typ ein neues Feld mit dem angegebenen Namen, Attributen, Feldtyp und benutzerdefinierten Modifizierern hinzu. |
| DefineGenericParameters(String[]) |
Definiert die generischen Typparameter für den aktuellen Typ, die Angabe ihrer Anzahl und deren Namen und gibt ein Array von GenericTypeParameterBuilder Objekten zurück, mit denen ihre Einschränkungen festgelegt werden können. |
| DefineInitializedData(String, Byte[], FieldAttributes) |
Definiert das initialisierte Datenfeld im Sdata-Abschnitt der PORTABLE ausführbaren Datei (PORTABLE Ausführbare Datei, PE). |
| DefineMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Fügt dem Typ eine neue Methode mit dem angegebenen Namen, Methodenattributen, aufrufenden Konventionen, Methodensignaturen und benutzerdefinierten Modifizierern hinzu. |
| DefineMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Fügt dem Typ eine neue Methode mit dem angegebenen Namen, Methodenattributen, aufrufenden Konventionen und Methodensignatur hinzu. |
| DefineMethod(String, MethodAttributes, CallingConventions) |
Fügt dem Typ eine neue Methode mit dem angegebenen Namen, Methodenattributen und aufrufenden Konventionen hinzu. |
| DefineMethod(String, MethodAttributes, Type, Type[]) |
Fügt dem Typ eine neue Methode mit dem angegebenen Namen, Methodenattributen und Methodensignatur hinzu. |
| DefineMethod(String, MethodAttributes) |
Fügt dem Typ eine neue Methode mit den angegebenen Namen- und Methodenattributen hinzu. |
| DefineMethodOverride(MethodInfo, MethodInfo) |
Gibt einen bestimmten Methodentext an, der eine bestimmte Methodendeklaration implementiert, möglicherweise mit einem anderen Namen. |
| DefineNestedType(String, TypeAttributes, Type, Int32) |
Definiert einen geschachtelten Typ unter Angabe seines Namens, Attributen, der Gesamtgröße des Typs und des Typs, den er erweitert. |
| DefineNestedType(String, TypeAttributes, Type, PackingSize, Int32) |
Definiert einen geschachtelten Typ unter Angabe des Namens, der Attribute, der Größe und des Typs, den er erweitert. |
| DefineNestedType(String, TypeAttributes, Type, PackingSize) |
Definiert einen geschachtelten Typ unter Angabe des Namens, der Attribute, des Typs, den er erweitert, und die Verpackungsgröße. |
| DefineNestedType(String, TypeAttributes, Type, Type[]) |
Definiert einen geschachtelten Typ unter Angabe des Namens, der Attribute, des Typs, den er erweitert, und die schnittstellen, die er implementiert. |
| DefineNestedType(String, TypeAttributes, Type) |
Definiert einen geschachtelten Typ anhand seines Namens, seiner Attribute und des Typs, den er erweitert. |
| DefineNestedType(String, TypeAttributes) |
Definiert einen geschachtelten Typ unter Angabe seines Namens und seiner Attribute. |
| DefineNestedType(String) |
Definiert einen geschachtelten Typ unter Angabe seines Namens. |
| DefinePInvokeMethod(String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet) |
Definiert eine |
| DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], CallingConvention, CharSet) |
Definiert eine |
| DefinePInvokeMethod(String, String, String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][], CallingConvention, CharSet) |
Definiert eine |
| DefineProperty(String, PropertyAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Fügt dem Typ eine neue Eigenschaft mit dem angegebenen Namen, der aufrufenden Konvention, der Eigenschaftensignatur und benutzerdefinierten Modifizierern hinzu. |
| DefineProperty(String, PropertyAttributes, CallingConventions, Type, Type[]) |
Fügt dem Typ eine neue Eigenschaft mit dem angegebenen Namen, Attributen, aufrufenden Konventionen und Eigenschaftensignatur hinzu. |
| DefineProperty(String, PropertyAttributes, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Fügt dem Typ eine neue Eigenschaft mit dem angegebenen Namen, der Eigenschaftssignatur und benutzerdefinierten Modifizierern hinzu. |
| DefineProperty(String, PropertyAttributes, Type, Type[]) |
Fügt dem Typ eine neue Eigenschaft mit dem angegebenen Namen und der Eigenschaftssignatur hinzu. |
| DefineTypeInitializer() |
Definiert den Initialisierer für diesen Typ. |
| DefineUninitializedData(String, Int32, FieldAttributes) |
Definiert ein nicht initialisiertes Datenfeld im |
| Equals(Object) |
Bestimmt, ob der zugrunde liegende Systemtyp des aktuellen Type Objekts mit dem zugrunde liegenden Systemtyp des angegebenen ObjectObjekts identisch ist. (Geerbt von Type) |
| Equals(Type) |
Bestimmt, ob der zugrunde liegende Systemtyp des aktuellen Type ist identisch mit dem zugrunde liegenden Systemtyp des angegebenen Type. (Geerbt von Type) |
| FindInterfaces(TypeFilter, Object) |
Gibt ein Array von Type Objekten zurück, das eine gefilterte Liste von Schnittstellen darstellt, die von der aktuellen Typeimplementiert oder geerbt werden. (Geerbt von Type) |
| FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) |
Gibt ein gefiltertes Array von MemberInfo Objekten des angegebenen Elementtyps zurück. (Geerbt von Type) |
| GetArrayRank() |
Ruft die Anzahl der Dimensionen in einem Array ab. (Geerbt von Type) |
| GetAttributeFlagsImpl() |
Wenn die Eigenschaft in einer abgeleiteten Klasse überschrieben wird, implementiert sie die Attributes Eigenschaft und ruft eine bitweise Kombination von Enumerationswerten ab, die die attribute angeben, die mit der Type. (Geerbt von Type) |
| GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Sucht nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden. (Geerbt von Type) |
| GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[]) |
Sucht anhand der angegebenen Bindungseinschränkungen nach einem Konstruktor, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetConstructor(Type, ConstructorInfo) |
Gibt den Konstruktor des angegebenen konstruierten generischen Typs zurück, der dem angegebenen Konstruktor der generischen Typdefinition entspricht. |
| GetConstructor(Type[]) |
Sucht nach einem öffentlichen Instanzkonstruktor, dessen Parameter den Typen im angegebenen Array entsprechen. (Geerbt von Type) |
| GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird nach einem Konstruktor gesucht, dessen Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden. (Geerbt von Type) |
| GetConstructors() |
Gibt alle für die aktuellen TypeKonstruktoren definierten öffentlichen Konstruktoren zurück. (Geerbt von Type) |
| GetConstructors(BindingFlags) |
Gibt ein Array von ConstructorInfo Objekten zurück, die die öffentlichen und nicht öffentlichen Konstruktoren darstellen, die für diese Klasse definiert sind, wie angegeben. |
| GetCustomAttributes(Boolean) |
Gibt alle für diesen Typ definierten benutzerdefinierten Attribute zurück. |
| GetCustomAttributes(Type, Boolean) |
Gibt alle benutzerdefinierten Attribute des aktuellen Typs zurück, die einem angegebenen Typ zugewiesen werden können. |
| GetCustomAttributesData() |
Gibt eine Liste von CustomAttributeData Objekten zurück, die Daten zu den Attributen darstellen, die auf das Zielelement angewendet wurden. (Geerbt von MemberInfo) |
| GetDeclaredEvent(String) |
Gibt ein Objekt zurück, das das angegebene Ereignis darstellt, das vom aktuellen Typ deklariert wird. (Geerbt von TypeInfo) |
| GetDeclaredField(String) |
Gibt ein Objekt zurück, das das angegebene Feld darstellt, das vom aktuellen Typ deklariert wird. (Geerbt von TypeInfo) |
| GetDeclaredMethod(String) |
Gibt ein Objekt zurück, das die angegebene Methode darstellt, die vom aktuellen Typ deklariert wird. (Geerbt von TypeInfo) |
| GetDeclaredMethods(String) |
Gibt eine Auflistung zurück, die alle Methoden enthält, die für den aktuellen Typ deklariert sind, die dem angegebenen Namen entsprechen. (Geerbt von TypeInfo) |
| GetDeclaredNestedType(String) |
Gibt ein Objekt zurück, das den angegebenen geschachtelten Typ darstellt, der vom aktuellen Typ deklariert wird. (Geerbt von TypeInfo) |
| GetDeclaredProperty(String) |
Gibt ein Objekt zurück, das die angegebene Eigenschaft darstellt, die vom aktuellen Typ deklariert wird. (Geerbt von TypeInfo) |
| GetDefaultMembers() |
Sucht nach den Elementen, die für den aktuellen TypeDefaultMemberAttribute Satz definiert sind. (Geerbt von Type) |
| GetElementType() |
Das Aufrufen dieser Methode löst immer aus NotSupportedException. |
| GetEnumName(Object) |
Gibt den Namen der Konstante zurück, die den angegebenen Wert für den aktuellen Enumerationstyp aufweist. (Geerbt von Type) |
| GetEnumNames() |
Gibt die Namen der Member des aktuellen Enumerationstyps zurück. (Geerbt von Type) |
| GetEnumUnderlyingType() |
Gibt den zugrunde liegenden Typ des aktuellen Enumerationstyps zurück. (Geerbt von Type) |
| GetEnumValues() |
Gibt ein Array der Werte der Konstanten im aktuellen Enumerationstyp zurück. (Geerbt von Type) |
| GetEvent(String, BindingFlags) |
Gibt das Ereignis mit dem angegebenen Namen zurück. |
| GetEvent(String) |
Gibt das EventInfo Objekt zurück, das das angegebene öffentliche Ereignis darstellt. (Geerbt von Type) |
| GetEvents() |
Gibt die öffentlichen Ereignisse zurück, die von diesem Typ deklariert oder geerbt werden. |
| GetEvents(BindingFlags) |
Gibt die öffentlichen und nicht öffentlichen Ereignisse zurück, die von diesem Typ deklariert werden. |
| GetField(String, BindingFlags) |
Gibt das durch den angegebenen Namen angegebene Feld zurück. |
| GetField(String) |
Sucht nach dem öffentlichen Feld mit dem angegebenen Namen. (Geerbt von Type) |
| GetField(Type, FieldInfo) |
Gibt das Feld des angegebenen konstruierten generischen Typs zurück, der dem angegebenen Feld der generischen Typdefinition entspricht. |
| GetFields() |
Gibt alle öffentlichen Felder der aktuellen TypeZurück. (Geerbt von Type) |
| GetFields(BindingFlags) |
Gibt die öffentlichen und nicht öffentlichen Felder zurück, die von diesem Typ deklariert werden. |
| GetGenericArguments() |
Gibt ein Array von Type Objekten zurück, das die Typargumente eines generischen Typs oder die Typparameter einer generischen Typdefinition darstellt. |
| GetGenericParameterConstraints() |
Gibt ein Array von Type Objekten zurück, die die Einschränkungen für den aktuellen generischen Typparameter darstellen. (Geerbt von Type) |
| GetGenericTypeDefinition() |
Gibt ein Type Objekt zurück, das eine generische Typdefinition darstellt, aus der der aktuelle Typ abgerufen werden kann. |
| GetHashCode() |
Gibt den Hashcode für diesen instance zurück. (Geerbt von Type) |
| GetInterface(String, Boolean) |
Gibt die von dieser Klasse implementierte Schnittstelle (direkt oder indirekt) mit dem vollqualifizierten Namen zurück, der dem angegebenen Schnittstellennamen entspricht. |
| GetInterface(String) |
Sucht nach der Schnittstelle mit dem angegebenen Namen. (Geerbt von Type) |
| GetInterfaceMap(Type) |
Gibt eine Schnittstellenzuordnung für die angeforderte Schnittstelle zurück. |
| GetInterfaces() |
Gibt ein Array aller in diesem Typ implementierten Schnittstellen und deren Basistypen zurück. |
| GetMember(String, BindingFlags) |
Sucht mithilfe der angegebenen Bindungseinschränkungen nach den angegebenen Membern. (Geerbt von Type) |
| GetMember(String, MemberTypes, BindingFlags) |
Gibt alle öffentlichen und nicht öffentlichen Member zurück, die von diesem Typ deklariert oder geerbt wurden, wie angegeben. |
| GetMember(String) |
Sucht nach den öffentlichen Mitgliedern mit dem angegebenen Namen. (Geerbt von Type) |
| GetMembers() |
Gibt alle öffentlichen Member der aktuellen TypeZurück. (Geerbt von Type) |
| GetMembers(BindingFlags) |
Gibt die Member für die öffentlichen und nicht öffentlichen Member zurück, die von diesem Typ deklariert oder geerbt wurden. |
| GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Sucht nach der angegebenen Methode, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, mithilfe der angegebenen Bindungseinschränkungen und der angegebenen Aufrufkonvention. (Geerbt von Type) |
| GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[]) |
Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Methode, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetMethod(String, BindingFlags) |
Sucht mithilfe der angegebenen Bindungseinschränkungen nach der angegebenen Methode. (Geerbt von Type) |
| GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Sucht nach der angegebenen Methode, deren Parameter mit der angegebenen generischen Parameteranzahl, Argumenttypen und Modifizierern übereinstimmen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden. (Geerbt von Type) |
| GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[]) |
Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Methode, deren Parameter der angegebenen generischen Parameteranzahl, Argumenttypen und Modifizierer entsprechen. (Geerbt von Type) |
| GetMethod(String, Int32, Type[], ParameterModifier[]) |
Sucht nach der angegebenen öffentlichen Methode, deren Parameter mit der angegebenen generischen Parameteranzahl, Argumenttypen und Modifizierern übereinstimmen. (Geerbt von Type) |
| GetMethod(String, Int32, Type[]) |
Sucht nach der angegebenen öffentlichen Methode, deren Parameter mit der angegebenen generischen Parameteranzahl und Argumenttypen übereinstimmen. (Geerbt von Type) |
| GetMethod(String, Type[], ParameterModifier[]) |
Sucht nach der angegebenen öffentlichen Methode, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetMethod(String, Type[]) |
Sucht nach der angegebenen öffentlichen Methode, deren Parameter den angegebenen Argumenttypen entsprechen. (Geerbt von Type) |
| GetMethod(String) |
Sucht nach der öffentlichen Methode mit dem angegebenen Namen. (Geerbt von Type) |
| GetMethod(Type, MethodInfo) |
Gibt die Methode des angegebenen konstruierten generischen Typs zurück, der der angegebenen Methode der generischen Typdefinition entspricht. |
| GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Wenn eine abgeleitete Klasse überschrieben wird, wird nach der angegebenen Methode gesucht, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden. (Geerbt von Type) |
| GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Wenn eine abgeleitete Klasse überschrieben wird, wird nach der angegebenen Methode gesucht, deren Parameter mit der angegebenen generischen Parameteranzahl, Argumenttypen und Modifizierern übereinstimmen, wobei die angegebenen Bindungseinschränkungen und die angegebene Aufrufkonvention verwendet werden. (Geerbt von Type) |
| GetMethods() |
Gibt alle öffentlichen Methoden der aktuellen TypeZurück. (Geerbt von Type) |
| GetMethods(BindingFlags) |
Gibt alle öffentlichen und nicht öffentlichen Methoden zurück, die von diesem Typ deklariert oder geerbt wurden, wie angegeben. |
| GetNestedType(String, BindingFlags) |
Gibt die öffentlichen und nicht öffentlichen geschachtelten Typen zurück, die von diesem Typ deklariert werden. |
| GetNestedType(String) |
Sucht nach dem öffentlichen geschachtelten Typ mit dem angegebenen Namen. (Geerbt von Type) |
| GetNestedTypes() |
Gibt die öffentlichen Typen zurück, die in der aktuellen Type. (Geerbt von Type) |
| GetNestedTypes(BindingFlags) |
Gibt die öffentlichen und nicht öffentlichen geschachtelten Typen zurück, die von diesem Typ deklariert oder geerbt werden. |
| GetProperties() |
Gibt alle öffentlichen Eigenschaften der aktuellen Typezurück. (Geerbt von Type) |
| GetProperties(BindingFlags) |
Gibt alle öffentlichen und nicht öffentlichen Eigenschaften zurück, die von diesem Typ deklariert oder geerbt wurden, wie angegeben. |
| GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) |
Sucht anhand der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetProperty(String, BindingFlags) |
Sucht mithilfe der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft. (Geerbt von Type) |
| GetProperty(String, Type, Type[], ParameterModifier[]) |
Sucht nach der angegebenen öffentlichen Eigenschaft, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetProperty(String, Type, Type[]) |
Sucht nach der angegebenen öffentlichen Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen. (Geerbt von Type) |
| GetProperty(String, Type) |
Sucht nach der öffentlichen Eigenschaft mit dem angegebenen Namen und Rückgabetyp. (Geerbt von Type) |
| GetProperty(String, Type[]) |
Sucht nach der angegebenen öffentlichen Eigenschaft, deren Parameter den angegebenen Argumenttypen entsprechen. (Geerbt von Type) |
| GetProperty(String) |
Sucht nach der öffentlichen Eigenschaft mit dem angegebenen Namen. (Geerbt von Type) |
| GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) |
Wenn eine abgeleitete Klasse überschrieben wird, wird mithilfe der angegebenen Bindungseinschränkungen nach der angegebenen Eigenschaft gesucht, deren Parameter den angegebenen Argumenttypen und Modifizierern entsprechen. (Geerbt von Type) |
| GetType() |
Ruft den aktuellen Type. (Geerbt von Type) |
| GetTypeCodeImpl() |
Gibt den zugrunde liegenden Typcode dieser Type Instanz zurück. (Geerbt von Type) |
| HasElementTypeImpl() |
Wenn die Eigenschaft in einer abgeleiteten Klasse überschrieben wird, wird die HasElementType Eigenschaft implementiert und bestimmt, ob der aktuelle Type Typ einen anderen Typ umfasst oder darauf verweist. Das heißt, ob es sich bei dem aktuellen Type Objekt um ein Array, einen Zeiger oder um einen Verweis handelt. (Geerbt von Type) |
| HasSameMetadataDefinitionAs(MemberInfo) |
Definiert und erstellt neue Instanzen von Klassen während der Laufzeit. (Geerbt von MemberInfo) |
| InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) |
Ruft das angegebene Element mithilfe der angegebenen Bindungseinschränkungen auf und entspricht der angegebenen Argumentliste und -kultur. (Geerbt von Type) |
| InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) |
Ruft das angegebene Element auf. Die methode, die aufgerufen werden soll, muss barrierefrei sein und die spezifischste Übereinstimmung mit der angegebenen Argumentliste bereitstellen, unter den Einschränkungen der angegebenen Ordner- und Aufrufattribute. |
| InvokeMember(String, BindingFlags, Binder, Object, Object[]) |
Ruft das angegebene Element mithilfe der angegebenen Bindungseinschränkungen auf und entspricht der angegebenen Argumentliste. (Geerbt von Type) |
| IsArrayImpl() |
Wenn die Eigenschaft in einer abgeleiteten Klasse überschrieben wird, wird die IsArray Eigenschaft implementiert und bestimmt, ob es Type sich um ein Array handelt. (Geerbt von Type) |
| IsAssignableFrom(Type) |
Ruft einen Wert ab, der angibt, ob ein angegebenes Type Objekt diesem Objekt zugewiesen werden kann. |
| IsAssignableFrom(TypeInfo) |
Ruft einen Wert ab, der angibt, ob diesem Objekt ein angegebenes TypeInfo Objekt zugewiesen werden kann. |
| IsByRefImpl() |
Wenn die Eigenschaft in einer abgeleiteten Klasse überschrieben wird, wird die IsByRef Eigenschaft implementiert und bestimmt, ob der Type Verweis übergeben wird. (Geerbt von Type) |
| IsCOMObjectImpl() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die IsCOMObject Eigenschaft implementiert und bestimmt, ob es Type sich um ein COM-Objekt handelt. (Geerbt von Type) |
| IsContextfulImpl() |
Implementiert die IsContextful Eigenschaft und bestimmt, ob die Type Datei in einem Kontext gehostet werden kann. (Geerbt von Type) |
| IsCreated() |
Gibt einen Wert zurück, der angibt, ob der aktuelle dynamische Typ erstellt wurde. |
| IsDefined(Type, Boolean) |
Bestimmt, ob ein benutzerdefiniertes Attribut auf den aktuellen Typ angewendet wird. |
| IsEnumDefined(Object) |
Gibt einen Wert zurück, der angibt, ob der angegebene Wert im aktuellen Enumerationstyp vorhanden ist. (Geerbt von Type) |
| IsEquivalentTo(Type) |
Bestimmt, ob zwei COM-Typen dieselbe Identität haben und für die Typgleichheit geeignet sind. (Geerbt von Type) |
| IsInstanceOfType(Object) |
Bestimmt, ob das angegebene Objekt eine Instanz des aktuellen TypeObjekts ist. (Geerbt von Type) |
| IsMarshalByRefImpl() |
Implementiert die IsMarshalByRef Eigenschaft und bestimmt, ob die Type Eigenschaft anhand eines Verweises gemarstet wird. (Geerbt von Type) |
| IsPointerImpl() |
Wenn die Eigenschaft in einer abgeleiteten Klasse überschrieben wird, wird die IsPointer Eigenschaft implementiert und bestimmt, ob es Type sich um einen Zeiger handelt. (Geerbt von Type) |
| IsPrimitiveImpl() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die IsPrimitive Eigenschaft implementiert und bestimmt, ob es Type sich um einen der Grundtypen handelt. (Geerbt von Type) |
| IsSubclassOf(Type) |
Bestimmt, ob dieser Typ von einem angegebenen Typ abgeleitet wird. |
| IsValueTypeImpl() |
Implementiert die IsValueType Eigenschaft und bestimmt, ob es Type sich um einen Werttyp handelt, d. h. keine Klasse oder Eine Schnittstelle. (Geerbt von Type) |
| MakeArrayType() |
Gibt ein Type Objekt zurück, das ein eindimensionales Array des aktuellen Typs mit einer unteren Nullgrenze darstellt. |
| MakeArrayType(Int32) |
Gibt ein Type Objekt zurück, das ein Array des aktuellen Typs mit der angegebenen Anzahl von Dimensionen darstellt. |
| MakeByRefType() |
Gibt ein Type -Objekt zurück, das den aktuellen Typ darstellt, wenn er als |
| MakeGenericType(Type[]) |
Ersetzt die Elemente eines Arrays von Typen für die Typparameter der aktuellen generischen Typdefinition und gibt den resultierenden konstruierten Typ zurück. |
| MakePointerType() |
Gibt ein Type Objekt zurück, das den Typ eines nicht verwalteten Zeigers auf den aktuellen Typ darstellt. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Legt ein benutzerdefiniertes Attribut mithilfe eines angegebenen benutzerdefinierten Attribut-BLOB fest. |
| SetCustomAttribute(CustomAttributeBuilder) |
Legen Sie ein benutzerdefiniertes Attribut mithilfe eines benutzerdefinierten Attribut-Generators fest. |
| SetParent(Type) |
Legt den Basistyp des typs fest, der derzeit im Bau ist. |
| ToString() |
Gibt den Namen des Typs zurück, der den Namespace ausschließt. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| _MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von MemberInfo) |
| _MemberInfo.GetType() |
Ruft ein Type Objekt ab, das die MemberInfo Klasse darstellt. (Geerbt von MemberInfo) |
| _MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. (Geerbt von MemberInfo) |
| _MemberInfo.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von MemberInfo) |
| _MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. (Geerbt von MemberInfo) |
| _Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Type) |
| _Type.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. (Geerbt von Type) |
| _Type.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Type) |
| _Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. (Geerbt von Type) |
| _TypeBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. |
| _TypeBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, die dann zum Abrufen der Typinformationen für eine Schnittstelle verwendet werden können. |
| _TypeBuilder.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). |
| _TypeBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. |
| IReflectableType.GetTypeInfo() |
Gibt eine Darstellung des aktuellen Typs als TypeInfo Objekt zurück. (Geerbt von TypeInfo) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetCustomAttribute(MemberInfo, Type, Boolean) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der auf ein angegebenes Element angewendet wird, und überprüft optional die Vorgänger dieses Elements. |
| GetCustomAttribute(MemberInfo, Type) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, das auf ein angegebenes Element angewendet wird. |
| GetCustomAttribute<T>(MemberInfo, Boolean) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, der auf ein angegebenes Element angewendet wird, und überprüft optional die Vorgänger dieses Elements. |
| GetCustomAttribute<T>(MemberInfo) |
Ruft ein benutzerdefiniertes Attribut eines angegebenen Typs ab, das auf ein angegebenes Element angewendet wird. |
| GetCustomAttributes(MemberInfo, Boolean) |
Ruft eine Auflistung von benutzerdefinierten Attributen ab, die auf ein angegebenes Element angewendet werden, und überprüft optional die Vorgänger dieses Elements. |
| GetCustomAttributes(MemberInfo, Type, Boolean) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf ein angegebenes Element angewendet werden, und überprüft optional die Vorgänger dieses Elements. |
| GetCustomAttributes(MemberInfo, Type) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf ein angegebenes Element angewendet werden. |
| GetCustomAttributes(MemberInfo) |
Ruft eine Auflistung von benutzerdefinierten Attributen ab, die auf ein angegebenes Element angewendet werden. |
| GetCustomAttributes<T>(MemberInfo, Boolean) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf ein angegebenes Element angewendet werden, und überprüft optional die Vorgänger dieses Elements. |
| GetCustomAttributes<T>(MemberInfo) |
Ruft eine Auflistung von benutzerdefinierten Attributen eines angegebenen Typs ab, die auf ein angegebenes Element angewendet werden. |
| GetRuntimeEvent(Type, String) |
Ruft ein Objekt ab, das das angegebene Ereignis darstellt. |
| GetRuntimeEvents(Type) |
Ruft eine Auflistung ab, die alle für einen angegebenen Typ definierten Ereignisse darstellt. |
| GetRuntimeField(Type, String) |
Ruft ein Objekt ab, das ein angegebenes Feld darstellt. |
| GetRuntimeFields(Type) |
Ruft eine Auflistung ab, die alle in einem angegebenen Typ definierten Felder darstellt. |
| GetRuntimeInterfaceMap(TypeInfo, Type) |
Gibt eine Schnittstellenzuordnung für den angegebenen Typ und die angegebene Schnittstelle zurück. |
| GetRuntimeMethod(Type, String, Type[]) |
Ruft ein Objekt ab, das eine angegebene Methode darstellt. |
| GetRuntimeMethods(Type) |
Ruft eine Auflistung ab, die alle methoden darstellt, die für einen angegebenen Typ definiert sind. |
| GetRuntimeProperties(Type) |
Ruft eine Auflistung ab, die alle für einen angegebenen Typ definierten Eigenschaften darstellt. |
| GetRuntimeProperty(Type, String) |
Ruft ein Objekt ab, das eine angegebene Eigenschaft darstellt. |
| GetTypeInfo(Type) |
Gibt die TypeInfo Darstellung des angegebenen Typs zurück. |
| IsDefined(MemberInfo, Type, Boolean) |
Gibt an, ob benutzerdefinierte Attribute eines angegebenen Typs auf ein angegebenes Element angewendet werden und optional auf seine Vorgänger angewendet werden. |
| IsDefined(MemberInfo, Type) |
Gibt an, ob benutzerdefinierte Attribute eines angegebenen Typs auf ein angegebenes Element angewendet werden. |