1

我正在为基于 Web 的 .Net 编辑器实现 Intellisense,我需要它来显示匹配关键字列表等。例如,在 C# 风格中,如果用户按下“u”,我需要它显示以“u”开头的本地符号和关键字(例如,“using”)。

问题:

  1. 是否可以检索语言中存在的所有关键字(包括内置类型名称,如“int”)?
  2. 是否可以仅检索在当前上下文中有效的关键字(例如,“使用”不适合“公共”之后)?
  3. 如果没有,我可以通过 Roslyn 获取上下文并手动选择合适的关键字吗?
4

1 回答 1

2

想通了。

var memberInfos = typeof (SyntaxKind).GetMembers(BindingFlags.Public | BindingFlags.Static);
var keywords = from memberInfo in memberInfos
               where memberInfo.Name.EndsWith("Keyword") 
               orderby memberInfo.Name
               select memberInfo.Name.CutoffEnd("Keyword").ToLower();

我正在为编译器指令获取一些额外的关键字,例如pragma,但这是一个好的开始。

于 2013-10-24T09:38:47.860 回答