c# - 如何获取 Roslyn 中 NamedTypeSymbol 的所有适用方法,包括扩展方法?

标签 c# extension-methods roslyn

我正在尝试使用额外的语法扩展 Roslyn 编译器,与 LINQ 不同的是,如果 SelectZip 等可以应用于该类型,则必须事先知道。我在 Binder 中执行此操作,因为我将嵌套语法节点简化为单个绑定(bind)表达式。 NamedTypeSymbol 上的 GetMembers 仅返回该类型的实际成员。我怎样才能获得为该类型定义的扩展方法列表,并且可以在代码的这个位置访问?

最佳答案

我不确定这是否适用于 Binder 级别,但如果您可以获取 Compilation 对象,那么您可以查询它GlobalNamespace 属性,它是“包含源代码或引用元数据中定义的所有命名空间和类型的根命名空间,合并到一个命名空间层次结构中。”从这里您可以获得(顶级)类型声明,然后您可以简单地查找与您正在处理的类型相匹配的任何扩展方法。

关于c# - 如何获取 Roslyn 中 NamedTypeSymbol 的所有适用方法,包括扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548770/

相关文章:

c# - 通过遍历数组创建 KeyValuePair 列表

javascript - 如何将 Jquery Datatables Ellipsis 渲染器用于模板字段链接按钮?

c# - 如何防止提供扩展方法的公共(public)类出现在 Intellisense 中?

c# - 为什么在使用静态导入时不能将扩展方法作为静态方法调用?

.net - 枚举扩展方法

c# - Visual Studio 代码分析器 : Finding types with zero references

.net-core - 需要构建针对.NET Standard\Core而不是.NET Portable的Roslyn Analyzer

c# - C# 属性声明的键盘快捷方式?

c# - 通过 Roslyn 编译解决方案时忽略 InternalsVisibleTo 属性

c# - 如何在 C# 的构造函数中使用重载函数