TypeBuilder.MakeByRefType Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Type ParametreByRef
(Visual Basic'te) olarak geçirildiğinde geçerli türü temsil eden bir ref
nesne döndürür.
public:
override Type ^ MakeByRefType();
public override Type MakeByRefType ();
override this.MakeByRefType : unit -> Type
Public Overrides Function MakeByRefType () As Type
Döndürülenler
Type ParametreByRef
(Visual Basic'te) olarak geçirildiğinde geçerli türü temsil eden nesneref
.
Örnekler
Aşağıdaki kod örneği bir dinamik modül, adlı Sample
bir soyut tür ve adlı TestMethod
bir soyut yöntem oluşturur.
TestMethod
türünde bir ref
parametre (ByRef
Visual Basic'te) Sample
alır, türüne yönelik bir işaretçi ve türünde Sample
Sample
bir dizi alır. türünde Sample
iki boyutlu bir dizi döndürür. Kod örneği dinamik modülü diske kaydeder, böylece Ildasm.exe (IL Ayrıştırıcısı) ile inceleyebilirsiniz.
using System;
using System.Reflection;
using System.Reflection.Emit;
using Microsoft.VisualBasic;
public class Example
{
public static void Main()
{
// Define a dynamic assembly to contain the sample type. The
// assembly will not be run, but only saved to disk, so
// AssemblyBuilderAccess.Save is specified.
//
AppDomain myDomain = AppDomain.CurrentDomain;
AssemblyName myAsmName = new AssemblyName("MakeXxxTypeExample");
AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Save);
// An assembly is made up of executable modules. For a single-
// module assembly, the module name and file name are the same
// as the assembly name.
//
ModuleBuilder myModule = myAssembly.DefineDynamicModule(
myAsmName.Name,
myAsmName.Name + ".dll");
// Define the sample type.
TypeBuilder myType = myModule.DefineType(
"Sample",
TypeAttributes.Public | TypeAttributes.Abstract);
// Define a method that takes a ref argument of type Sample,
// a pointer to type Sample, and an array of Sample objects. The
// method returns a two-dimensional array of Sample objects.
//
// To create this method, you need Type objects that represent the
// parameter types and the return type. Use the MakeByRefType,
// MakePointerType, and MakeArrayType methods to create the Type
// objects.
//
Type byRefMyType = myType.MakeByRefType();
Type pointerMyType = myType.MakePointerType();
Type arrayMyType = myType.MakeArrayType();
Type twoDimArrayMyType = myType.MakeArrayType(2);
// Create the array of parameter types.
Type[] parameterTypes = {byRefMyType, pointerMyType, arrayMyType};
// Define the abstract Test method. After you have compiled
// and run this code example code, you can use ildasm.exe
// to open MakeXxxTypeExample.dll, examine the Sample type,
// and verify the parameter types and return type of the
// TestMethod method.
//
MethodBuilder myMethodBuilder = myType.DefineMethod(
"TestMethod",
MethodAttributes.Abstract | MethodAttributes.Virtual
| MethodAttributes.Public,
twoDimArrayMyType,
parameterTypes);
// Create the type and save the assembly. For a single-file
// assembly, there is only one module to store the manifest
// information in.
//
myType.CreateType();
myAssembly.Save(myAsmName.Name + ".dll");
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Public Class Example
Public Shared Sub Main()
' Define a dynamic assembly to contain the sample type. The
' assembly will not be run, but only saved to disk, so
' AssemblyBuilderAccess.Save is specified.
'
Dim myDomain As AppDomain = AppDomain.CurrentDomain
Dim myAsmName As New AssemblyName("MakeXxxTypeExample")
Dim myAssembly As AssemblyBuilder = myDomain.DefineDynamicAssembly( _
myAsmName, _
AssemblyBuilderAccess.Save)
' An assembly is made up of executable modules. For a single-
' module assembly, the module name and file name are the same
' as the assembly name.
'
Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule( _
myAsmName.Name, _
myAsmName.Name & ".dll")
' Define the sample type.
Dim myType As TypeBuilder = myModule.DefineType( _
"Sample", _
TypeAttributes.Public Or TypeAttributes.Abstract)
' Define a method that takes a ByRef argument of type Sample,
' a pointer to type Sample, and an array of Sample objects. The
' method returns a two-dimensional array of Sample objects.
'
' To create this method, you need Type objects that represent the
' parameter types and the return type. Use the MakeByRefType,
' MakePointerType, and MakeArrayType methods to create the Type
' objects.
'
Dim byRefMyType As Type = myType.MakeByRefType
Dim pointerMyType As Type = myType.MakePointerType
Dim arrayMyType As Type = myType.MakeArrayType
Dim twoDimArrayMyType As Type = myType.MakeArrayType(2)
' Create the array of parameter types.
Dim parameterTypes() As Type = _
{byRefMyType, pointerMyType, arrayMyType}
' Define the abstract Test method. After you have compiled
' and run this code example code, you can use ildasm.exe
' to open MakeXxxTypeExample.dll, examine the Sample type,
' and verify the parameter types and return type of the
' TestMethod method.
'
Dim myMethodBuilder As MethodBuilder = myType.DefineMethod( _
"TestMethod", _
MethodAttributes.Abstract Or MethodAttributes.Virtual _
Or MethodAttributes.Public, _
twoDimArrayMyType, _
parameterTypes)
' Create the type and save the assembly. For a single-file
' assembly, there is only one module to store the manifest
' information in.
'
myType.CreateType()
myAssembly.Save(myAsmName.Name & ".dll")
End Sub
End Class
Açıklamalar
yöntemi, MakeByRefType parametre listeleri için türler (ByRef
Visual Basic'te) oluşturmak ref
için bir yol sağlar.
Not
Microsoft ara dili (MSIL) söz dizimini kullanarak, geçerli TypeBuilder değeri öğesini temsil ederse MyType
, bu yöntem tarafından döndürülen tür olacaktır MyType&
.