GenericTypeParameterBuilder.MakeArrayType Methode
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.
Gibt den Typ eines Arrays zurück, dessen Elementtyp der generische Typparameter ist.
Überlädt
MakeArrayType(Int32) |
Gibt den Typ eines Arrays, dessen Elementtyp der generische Typparameter ist, mit der angegebenen Anzahl von Dimensionen zurück. |
MakeArrayType() |
Gibt den Typ eines eindimensionalen Arrays zurück, dessen Elementtyp der generische Typparameter ist. |
MakeArrayType(Int32)
Gibt den Typ eines Arrays, dessen Elementtyp der generische Typparameter ist, mit der angegebenen Anzahl von Dimensionen zurück.
public:
override Type ^ MakeArrayType(int rank);
public override Type MakeArrayType (int rank);
override this.MakeArrayType : int -> Type
Public Overrides Function MakeArrayType (rank As Integer) As Type
Parameter
- rank
- Int32
Die Anzahl von Dimensionen für das Array.
Gibt zurück
Ein Type-Objekt, das den Typ eines Arrays, dessen Elementtyp der generische Typparameter ist, mit der angegebenen Anzahl von Dimensionen darstellt.
Ausnahmen
rank
ist keine gültige Anzahl von Dimensionen. Beispielsweise ist der Wert kleiner als 1.
Beispiele
Im folgenden Codebeispiel wird ein dynamisches Modul, ein abstrakter generischer Typ mit einem Sample
Typparameter und T
eine abstrakte Methode mit dem Namen TestMethod
erstellt.
TestMethod
nimmt einen ref
Parameter (ByRef
in Visual Basic) vom Typ T
, einen Zeiger auf den Typ T
und ein Array von T
. Diese Methode gibt ein zweidimensionales Array von zurück T
. Im Codebeispiel wird das dynamische Modul auf dem Datenträger gespeichert, sodass Sie es mithilfe des MSIL-Disassemblers (Ildasm.exe) untersuchen können.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
int 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^ appDomain = AppDomain::CurrentDomain;
AssemblyName^ assemblyName = gcnew
AssemblyName("MakeXxxGenericTypeParameterExample");
AssemblyBuilder^ assemblyBuilder = appDomain->DefineDynamicAssembly
(assemblyName, 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^ moduleBuilder = assemblyBuilder->DefineDynamicModule
(assemblyName->Name, assemblyName->Name + ".dll");
// Define the sample type.
TypeBuilder^ typeBuilder = moduleBuilder->DefineType("Sample",
TypeAttributes::Public | TypeAttributes::Abstract);
// Make the sample type a generic type, by defining a type
// parameter T. All type parameters are defined at the same
// time, by passing an array containing the type parameter
// names.
array<String^>^ typeParamNames = {"T"};
array<GenericTypeParameterBuilder^>^ typeParams =
typeBuilder->DefineGenericParameters(typeParamNames);
// Define a method that takes a ByRef argument of type T, a
// pointer to type T, and one-dimensional array of type T.
// The method returns a two-dimensional array of type T.
//
// To create this method, you need Type objects that repre-
// sent the parameter types and the return type. Use the
// MakeByRefType, MakePointerType, and MakeArrayType methods
// to create the Type objects, using the generic type para-
// meter T.
//
Type^ byRefType = typeParams[0]->MakeByRefType();
Type^ pointerType = typeParams[0]->MakePointerType();
Type^ arrayType = typeParams[0]->MakeArrayType();
Type^ twoDimArrayType = typeParams[0]->MakeArrayType(2);
// Create the array of parameter types.
array<Type^>^ parameterTypes = {byRefType, pointerType, arrayType};
// Define the abstract Test method. After you have compiled
// and run this example code, you can use ildasm.exe to open
// MakeXxxGenericTypeParameterExample.dll, examine the Sample
// type, and verify the parameter types and return type of
// the TestMethod method.
//
MethodBuilder^ methodBuilder = typeBuilder->DefineMethod("TestMethod",
MethodAttributes::Abstract | MethodAttributes::Virtual
| MethodAttributes::Public, twoDimArrayType, parameterTypes);
// Create the type and save the assembly. For a single-file
// assembly, there is only one module to store the manifest
// information in.
//
typeBuilder->CreateType();
assemblyBuilder->Save(assemblyName->Name + ".dll");
};
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("MakeXxxGenericTypeParameterExample");
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);
// Make the sample type a generic type, by defining a type
// parameter T. All type parameters are defined at the same
// time, by passing an array containing the type parameter
// names.
string[] typeParamNames = {"T"};
GenericTypeParameterBuilder[] typeParams =
myType.DefineGenericParameters(typeParamNames);
// Define a method that takes a ByRef argument of type T, a
// pointer to type T, and one-dimensional array of type T. The
// method returns a two-dimensional array of type T.
//
// 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, using the generic type parameter T.
//
Type byRefType = typeParams[0].MakeByRefType();
Type pointerType = typeParams[0].MakePointerType();
Type arrayType = typeParams[0].MakeArrayType();
Type twoDimArrayType = typeParams[0].MakeArrayType(2);
// Create the array of parameter types.
Type[] parameterTypes = {byRefType, pointerType, arrayType};
// Define the abstract Test method. After you have compiled
// and run this example code, you can use ildasm.exe to open
// MakeXxxGenericTypeParameterExample.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,
twoDimArrayType,
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("MakeXxxGenericTypeParameterExample")
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)
' Make the sample type a generic type, by defining a type
' parameter T. All type parameters are defined at the same
' time, by passing an array containing the type parameter
' names.
Dim typeParamNames() As String = {"T"}
Dim typeParams() As GenericTypeParameterBuilder = _
myType.DefineGenericParameters(typeParamNames)
' Define a method that takes a ByRef argument of type T, a
' pointer to type T, and one-dimensional array of type T. The
' method returns a two-dimensional array of type T.
'
' 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, using the generic type parameter T.
'
Dim byRefType As Type = typeParams(0).MakeByRefType
Dim pointerType As Type = typeParams(0).MakePointerType
Dim arrayType As Type = typeParams(0).MakeArrayType
Dim twoDimArrayType As Type = typeParams(0).MakeArrayType(2)
' Create the array of parameter types.
Dim parameterTypes() As Type = _
{byRefType, pointerType, arrayType}
' Define the abstract Test method. After you have compiled
' and run this example code, you can use ildasm.exe to open
' MakeXxxGenericTypeParameterExample.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, _
twoDimArrayType, _
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
Hinweise
Die MakeArrayType -Methode bietet eine Möglichkeit, Arraytypen für Parameterlisten zu generieren.
Weitere Informationen
Gilt für:
MakeArrayType()
Gibt den Typ eines eindimensionalen Arrays zurück, dessen Elementtyp der generische Typparameter ist.
public:
override Type ^ MakeArrayType();
public override Type MakeArrayType ();
override this.MakeArrayType : unit -> Type
Public Overrides Function MakeArrayType () As Type
Gibt zurück
Ein Type-Objekt, das den Typ eines eindimensionalen Arrays darstellt, dessen Elementtyp der generische Typparameter ist.
Beispiele
Im folgenden Codebeispiel wird ein dynamisches Modul, ein abstrakter generischer Typ mit einem Sample
Typparameter und T
eine abstrakte Methode mit dem Namen TestMethod
erstellt.
TestMethod
nimmt einen ref
Parameter (ByRef
in Visual Basic) vom Typ T
, einen Zeiger auf den Typ T
und ein Array von T
. Diese Methode gibt ein zweidimensionales Array von zurück T
. Im Codebeispiel wird das dynamische Modul auf dem Datenträger gespeichert, sodass Sie es mithilfe des MSIL-Disassemblers (Ildasm.exe) untersuchen können.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
int 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^ appDomain = AppDomain::CurrentDomain;
AssemblyName^ assemblyName = gcnew
AssemblyName("MakeXxxGenericTypeParameterExample");
AssemblyBuilder^ assemblyBuilder = appDomain->DefineDynamicAssembly
(assemblyName, 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^ moduleBuilder = assemblyBuilder->DefineDynamicModule
(assemblyName->Name, assemblyName->Name + ".dll");
// Define the sample type.
TypeBuilder^ typeBuilder = moduleBuilder->DefineType("Sample",
TypeAttributes::Public | TypeAttributes::Abstract);
// Make the sample type a generic type, by defining a type
// parameter T. All type parameters are defined at the same
// time, by passing an array containing the type parameter
// names.
array<String^>^ typeParamNames = {"T"};
array<GenericTypeParameterBuilder^>^ typeParams =
typeBuilder->DefineGenericParameters(typeParamNames);
// Define a method that takes a ByRef argument of type T, a
// pointer to type T, and one-dimensional array of type T.
// The method returns a two-dimensional array of type T.
//
// To create this method, you need Type objects that repre-
// sent the parameter types and the return type. Use the
// MakeByRefType, MakePointerType, and MakeArrayType methods
// to create the Type objects, using the generic type para-
// meter T.
//
Type^ byRefType = typeParams[0]->MakeByRefType();
Type^ pointerType = typeParams[0]->MakePointerType();
Type^ arrayType = typeParams[0]->MakeArrayType();
Type^ twoDimArrayType = typeParams[0]->MakeArrayType(2);
// Create the array of parameter types.
array<Type^>^ parameterTypes = {byRefType, pointerType, arrayType};
// Define the abstract Test method. After you have compiled
// and run this example code, you can use ildasm.exe to open
// MakeXxxGenericTypeParameterExample.dll, examine the Sample
// type, and verify the parameter types and return type of
// the TestMethod method.
//
MethodBuilder^ methodBuilder = typeBuilder->DefineMethod("TestMethod",
MethodAttributes::Abstract | MethodAttributes::Virtual
| MethodAttributes::Public, twoDimArrayType, parameterTypes);
// Create the type and save the assembly. For a single-file
// assembly, there is only one module to store the manifest
// information in.
//
typeBuilder->CreateType();
assemblyBuilder->Save(assemblyName->Name + ".dll");
};
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("MakeXxxGenericTypeParameterExample");
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);
// Make the sample type a generic type, by defining a type
// parameter T. All type parameters are defined at the same
// time, by passing an array containing the type parameter
// names.
string[] typeParamNames = {"T"};
GenericTypeParameterBuilder[] typeParams =
myType.DefineGenericParameters(typeParamNames);
// Define a method that takes a ByRef argument of type T, a
// pointer to type T, and one-dimensional array of type T. The
// method returns a two-dimensional array of type T.
//
// 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, using the generic type parameter T.
//
Type byRefType = typeParams[0].MakeByRefType();
Type pointerType = typeParams[0].MakePointerType();
Type arrayType = typeParams[0].MakeArrayType();
Type twoDimArrayType = typeParams[0].MakeArrayType(2);
// Create the array of parameter types.
Type[] parameterTypes = {byRefType, pointerType, arrayType};
// Define the abstract Test method. After you have compiled
// and run this example code, you can use ildasm.exe to open
// MakeXxxGenericTypeParameterExample.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,
twoDimArrayType,
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("MakeXxxGenericTypeParameterExample")
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)
' Make the sample type a generic type, by defining a type
' parameter T. All type parameters are defined at the same
' time, by passing an array containing the type parameter
' names.
Dim typeParamNames() As String = {"T"}
Dim typeParams() As GenericTypeParameterBuilder = _
myType.DefineGenericParameters(typeParamNames)
' Define a method that takes a ByRef argument of type T, a
' pointer to type T, and one-dimensional array of type T. The
' method returns a two-dimensional array of type T.
'
' 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, using the generic type parameter T.
'
Dim byRefType As Type = typeParams(0).MakeByRefType
Dim pointerType As Type = typeParams(0).MakePointerType
Dim arrayType As Type = typeParams(0).MakeArrayType
Dim twoDimArrayType As Type = typeParams(0).MakeArrayType(2)
' Create the array of parameter types.
Dim parameterTypes() As Type = _
{byRefType, pointerType, arrayType}
' Define the abstract Test method. After you have compiled
' and run this example code, you can use ildasm.exe to open
' MakeXxxGenericTypeParameterExample.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, _
twoDimArrayType, _
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
Hinweise
Die MakeArrayType -Methode bietet eine Möglichkeit, Arraytypen für Parameterlisten zu generieren.