Разрешение токена метаданных параметра общего типа - PullRequest
3 голосов
/ 08 августа 2009

Есть ли способ отражения API .NET 4.0 (или более ранней) для разрешения параметра универсального типа? См. Две строки после моего комментария 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 голосов
/ 09 августа 2009

А как насчет Module.ResolveType (int, Type [], Type []) перегрузка?

...