【发布时间】:2016-06-03 14:12:15
【问题描述】:
我正在尝试使用附加语法扩展 Roslyn 编译器,与 LINQ 不同,它必须事先知道 Select、Zip 等是否可以应用于该类型。我在活页夹中执行此操作,因为我将嵌套语法节点简化为单个绑定表达式。 NamedTypeSymbol 上的 GetMembers 仅返回该类型的实际成员。如何获取为该类型定义且可在代码中的此位置访问的扩展方法列表?
【问题讨论】:
-
你看过这个代码示例吗? joshvarty.wordpress.com/roslynfaq/csharp/#faq5
-
@WouterdeKort 谢谢,但这有点不同。这个 sn-p 首先编译源代码,而我正在扩展 Roslyn 编译器本身。谢谢,反正我看看
SemanticModel是哪一步产生的。 -
请注意,如果您使用语法生成类型推断表达式,并将这些名称作为匿名类型的委托成员或常规成员,这样的扩展可能会导致绑定阶段的循环依赖,并在表达式中使用该推断类型。
标签: c# extension-methods roslyn