Export (0) Print
Expand All

GenericTypeParameterBuilder.MakePointerType Method

Returns a Type object that represents a pointer to the current generic type parameter.

Namespace:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

public override Type MakePointerType()

Return Value

Type: System.Type
A Type object that represents a pointer to the current generic type parameter.

The MakePointerType method provides a way to generate pointer types for parameter lists.

The following code example creates a dynamic module, an abstract generic type named Sample with one type parameter, T, and an abstract method named TestMethod. TestMethod takes a ref parameter (ByRef in Visual Basic) of type T, a pointer to type T, and an array of T. This method returns a two-dimensional array of T.


// Define a dynamic assembly to contain the sample type. 
//
AppDomain myDomain = AppDomain.CurrentDomain;
AssemblyName myAsmName = new
    AssemblyName("MakeXxxGenericTypeParameterExample");
AssemblyBuilder myAssembly = myDomain.DefineDynamicAssembly(
    myAsmName, AssemblyBuilderAccess.Run);
ModuleBuilder myModule = myAssembly.DefineDynamicModule(
    myAsmName.Name);

// 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. 
//
MethodBuilder myMethodBuilder = myType.DefineMethod(
    "TestMethod",
    MethodAttributes.Abstract | MethodAttributes.Virtual
    | MethodAttributes.Public,
    twoDimArrayType,
    parameterTypes);

// Create the type.
//
myType.CreateType();


Silverlight

Supported in: 5, 4, 3

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2014 Microsoft