我正在为基于 Web 的 .Net 编辑器实现 Intellisense,我需要它来显示匹配关键字列表等。例如,在 C# 风格中,如果用户按下“u”,我需要它显示以“u”开头的本地符号和关键字(例如,“using”)。
问题:
- 是否可以检索语言中存在的所有关键字(包括内置类型名称,如“int”)?
- 是否可以仅检索在当前上下文中有效的关键字(例如,“使用”不适合“公共”之后)?
- 如果没有,我可以通过 Roslyn 获取上下文并手动选择合适的关键字吗?
我正在为基于 Web 的 .Net 编辑器实现 Intellisense,我需要它来显示匹配关键字列表等。例如,在 C# 风格中,如果用户按下“u”,我需要它显示以“u”开头的本地符号和关键字(例如,“using”)。
问题:
想通了。
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
,但这是一个好的开始。