我正在尝试使用额外的语法扩展 Roslyn 编译器,与 LINQ 不同的是,如果 Select
、Zip
等可以应用于该类型,则必须事先知道。我在 Binder 中执行此操作,因为我将嵌套语法节点简化为单个绑定(bind)表达式。 NamedTypeSymbol
上的 GetMembers
仅返回该类型的实际成员。我怎样才能获得为该类型定义的扩展方法列表,并且可以在代码的这个位置访问?
最佳答案
我不确定这是否适用于 Binder
级别,但如果您可以获取 Compilation
对象,那么您可以查询它GlobalNamespace
属性,它是“包含源代码或引用元数据中定义的所有命名空间和类型的根命名空间,合并到一个命名空间层次结构中。”从这里您可以获得(顶级)类型声明,然后您可以简单地查找与您正在处理的类型相匹配的任何扩展方法。
关于c# - 如何获取 Roslyn 中 NamedTypeSymbol 的所有适用方法,包括扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548770/