Resolving the metadata token of a generic type parameter

Posted by 280Z28 on Stack Overflow See other posts from Stack Overflow or by 280Z28
Published on 2009-08-08T19:58:10Z Indexed on 2010/05/08 4:08 UTC
Read the original article Hit count: 351

Filed under:
|
|

Is there any way the .NET 4.0 (or earlier) reflection API to resolve a generic type parameter? See the two lines after my ArgumentException comment for my current attempt.

[TestMethod]
public void TestGenericParameterTokenResolution()
{
    Type genericParameter = typeof(List<>).GetGenericArguments()[0];
    Assert.IsTrue(genericParameter.IsGenericParameter);
    int metadataToken = genericParameter.MetadataToken;

    // make sure the metadata token is a GenericParam
    Assert.AreEqual(metadataToken & 0xFF000000, 0x2A000000);

    Module module = typeof(List<>).Module;
    // the following both throw an ArgumentException.
    Type resolvedParameter = module.ResolveType(metadataToken);
    resolvedParameter = (Type)module.ResolveMember(metadataToken);

    Assert.AreSame(genericParameter, resolvedParameter);
}

© Stack Overflow or respective owner

Related posts about .NET

Related posts about reflection