gpt4 book ai didi

c# - Roslyn 的 GetTypeByMetadataName() 和通用类型

转载 作者:太空狗 更新时间:2023-10-29 21:39:16 25 4
gpt4 key购买 nike

我正在尝试检索给定类型中的所有 IMethodSymbol。对于封闭类型(即没有泛型的类型)我可以使用 CSharpCompilation.GetTypeByMetaDataName()并传入完全限定的类型名称。

但是,对于开放类型(例如 MyClass<T> ),完全限定名称似乎不起作用。我试过提供不带类型参数 ( MyClass ) 的完全限定名称,也尝试提供封闭类型 ( MyClass<int> ),但似乎都不起作用。

使用完全限定名称查找此类型的最佳方法是什么?

最佳答案

正如评论中提到的,编译器约定是采用类似 MyClass<T> 的类名并将其表示为

MyClass`1

一个工作示例:

var tree = CSharpSyntaxTree.ParseText(@"
public class MyClass<T> {
public static T Method()
{
}
}");

var mscorlib = new MetadataFileReference(typeof(object).Assembly.Location);
var compilation = CSharpCompilation.Create("MyCompilation",
syntaxTrees: new[] { tree }, references: new[] { mscorlib });

var type = compilation.GetTypeByMetadataName("MyClass`1");

关于c# - Roslyn 的 GetTypeByMetadataName() 和通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com