我正在尝试检索给定类型中的所有IMethodSymbols.对于封闭类型(即没有泛型的类型),我可以使用CSharpCompilation.GetTypeByMetaDataName()并传入完全限定的类型名称.
但是,对于开放类型(例如MyClass
),完全限定名称似乎不起作用.我已经尝试提供没有type参数(MyClass
)的完全限定名称,也提供了一个封闭类型(MyClass
),但似乎都没有.
使用完全限定名称查找此类型的最佳方法是什么?
正如评论中所提到的,编译器约定是采用类名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");