TypeBuilder.MakeArrayType Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Type Vrátí objekt, který představuje pole aktuálního typu.
Přetížení
| Name | Description |
|---|---|
| MakeArrayType(Int32) |
Type Vrátí objekt, který představuje pole aktuálního typu se zadaným počtem dimenzí. |
| MakeArrayType() |
Type Vrátí objekt, který představuje jednorozměrné pole aktuálního typu s dolní mezí nuly. |
MakeArrayType(Int32)
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
Type Vrátí objekt, který představuje pole aktuálního typu se zadaným počtem dimenzí.
public:
override Type ^ MakeArrayType(int rank);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")]
public override Type MakeArrayType(int rank);
public override Type MakeArrayType(int rank);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")>]
override this.MakeArrayType : int -> Type
override this.MakeArrayType : int -> Type
Public Overrides Function MakeArrayType (rank As Integer) As Type
Parametry
- rank
- Int32
Počet dimenzí pole.
Návraty
Objekt Type , který představuje jednorozměrné pole aktuálního typu.
- Atributy
Výjimky
rank není platná dimenze pole.
Příklady
Následující příklad kódu vytvoří dynamický modul, abstraktní typ pojmenovaný Samplea abstraktní metodu s názvem TestMethod.
TestMethod přebírá parametr ref (ByRef v Visual Basic) typu Sample, ukazatel na typ Sample a pole typu Sample. Vrátí dvojrozměrné pole typu Sample. Příklad kódu uloží dynamický modul na disk, abyste ho mohli prozkoumat pomocí Ildasm.exe (IL Disassembler).
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
Poznámky
Metoda MakeArrayType poskytuje způsob, jak vygenerovat typ pole s libovolným možným typem elementu, včetně obecných typů.
Viz také
Platí pro
MakeArrayType()
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
- Zdroj:
- TypeBuilder.cs
Type Vrátí objekt, který představuje jednorozměrné pole aktuálního typu s dolní mezí nuly.
public:
override Type ^ MakeArrayType();
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")]
public override Type MakeArrayType();
public override Type MakeArrayType();
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")>]
override this.MakeArrayType : unit -> Type
override this.MakeArrayType : unit -> Type
Public Overrides Function MakeArrayType () As Type
Návraty
Objekt Type představující jednorozměrný typ pole, jehož typ prvku je aktuálním typem, s dolní mezí nuly.
- Atributy
Příklady
Následující příklad kódu vytvoří dynamický modul, abstraktní typ pojmenovaný Samplea abstraktní metodu s názvem TestMethod.
TestMethod přebírá parametr ref (ByRef v Visual Basic) typu Sample, ukazatel na typ Sample a pole typu Sample. Vrátí dvojrozměrné pole typu Sample. Příklad kódu uloží dynamický modul na disk, abyste ho mohli prozkoumat pomocí Ildasm.exe (IL Disassembler).
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
Poznámky
Metoda MakeArrayType poskytuje způsob, jak vygenerovat typ pole s libovolným možným typem elementu, včetně obecných typů.