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

时间:2016-02-22 08:17:37

标签: c# extension-methods roslyn

我正在尝试使用其他语法扩展Roslyn编译器,这与LINQ必须事先知道SelectZip等是否可以应用于该类型。我在绑定器中执行此操作,因为我将嵌套语法节点简化为单个绑定表达式。 GetMembers上的NamedTypeSymbol仅返回该类型的实际成员。如何获取为该类型定义的扩展方法列表,并且可以在代码中的此处访问?

1 个答案:

答案 0 :(得分:0)

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