解析泛型类型参数的元数据标记

时间:2009-08-08 19:58:11

标签: .net reflection clr

.NET 4.0(或更早版本)反射API有什么方法可以解析泛型类型参数?查看我当前尝试的ArgumentException注释后的两行。

[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);
}

1 个答案:

答案 0 :(得分:0)