GenericTypeParameterBuilder.MakeArrayType 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
요소 형식이 제네릭 형식 매개 변수인 배열의 형식을 반환합니다.
오버로드
| Name | Description |
|---|---|
| MakeArrayType(Int32) |
지정된 차원 수를 사용하여 요소 형식이 제네릭 형식 매개 변수인 배열의 형식을 반환합니다. |
| MakeArrayType() |
요소 형식이 제네릭 형식 매개 변수인 1차원 배열의 형식을 반환합니다. |
MakeArrayType(Int32)
지정된 차원 수를 사용하여 요소 형식이 제네릭 형식 매개 변수인 배열의 형식을 반환합니다.
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
매개 변수
- rank
- Int32
배열의 차원 수입니다.
반품
Type 요소 형식이 지정된 차원 수를 가진 제네릭 형식 매개 변수인 배열의 형식을 나타내는 개체입니다.
- 특성
예외
rank 가 유효한 차원 수가 아닌 경우 예를 들어 해당 값은 1보다 작습니다.
예제
다음 코드 예제에서는 동적 모듈, 하나의 형식 매개 변수Sample로 명명된 T 추상 제네릭 형식 및 이름이 지정된 TestMethod추상 메서드를 만듭니다.
TestMethod는 ref 형식의 ByRef 매개 변수(Visual Basic T), T 형식에 대한 포인터 및 T 배열을 사용합니다. 이 메서드는 2차원 배열을 반환합니다 T. 이 코드 예제에서는 동적 모듈을 디스크에 저장하므로 MSIL 디스어셈블러(Ildasm.exe)를 사용하여 검사할 수 있습니다.
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
설명
이 메서드는 MakeArrayType 매개 변수 목록에 대한 배열 형식을 생성하는 방법을 제공합니다.
추가 정보
적용 대상
MakeArrayType()
요소 형식이 제네릭 형식 매개 변수인 1차원 배열의 형식을 반환합니다.
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
반품
Type 요소 형식이 제네릭 형식 매개 변수인 1차원 배열의 형식을 나타내는 개체입니다.
- 특성
예제
다음 코드 예제에서는 동적 모듈, 하나의 형식 매개 변수Sample로 명명된 T 추상 제네릭 형식 및 이름이 지정된 TestMethod추상 메서드를 만듭니다.
TestMethod는 ref 형식의 ByRef 매개 변수(Visual Basic T), T 형식에 대한 포인터 및 T 배열을 사용합니다. 이 메서드는 2차원 배열을 반환합니다 T. 이 코드 예제에서는 동적 모듈을 디스크에 저장하므로 MSIL 디스어셈블러(Ildasm.exe)를 사용하여 검사할 수 있습니다.
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
설명
이 메서드는 MakeArrayType 매개 변수 목록에 대한 배열 형식을 생성하는 방법을 제공합니다.