0

非常简单的问题:如何获取 C# 中所有操作数的列表?例子:

{ "return", "break", "if", "case", "switch", ... };

更难的问题:如何获取所有函数(类型、方法)的列表?

{ "string", "Math.Abs", "double.IsNaN", "int.ToString", ... };

我想为CodeDom制作类似IntelliSense的东西(一个非常糟糕和肮脏的东西)。因此,用户可以通过将他的代码作为文本添加到我的代码中来扩展软件的功能。我为他提供了一个带有某些参数的函数体,他可以使用这些参数,但他也应该能够使用任何标准函数,例如,或. 他将他的代码输入到RichTextEditor中。而且我想让他更容易看到语法(突出显示已知操作数、打开/关闭括号、函数参数)。double.ToString()Math.PI

我已经可以突出显示单词(参数),它看起来不错,但突出显示所有内容会很酷。我认为它是获取操作数/函数/类型/方法的列表,我不知道该怎么做(我可以自己将所有操作数输入到数组中)。

这个问题是否应该改写:如何制作我自己的 IntelliSense?:-)

PS:一个快速的潜伏甚至没有给我提供一个结果,我实际上有问题来制定我正在寻找的东西。

4

3 回答 3

5

对于关键字,您可以访问规范或 MSDN;例如这里- 虽然 IIRC 有一些模糊的遗漏。请注意,许多关键字是上下文相关的(意思是:它们可能并不总是关键字),并且可以转义关键字(string @int = "evil";)。

对于“所有功能”......好吧,有assembly.GetTypes(),type.GetMethods()等。那和“循环”。

于 2013-07-29T13:58:29.360 回答
2

你问的有两点:

  1. C# 关键字 - 这些是诸如int, return,breakstring- C# 文档中提供的列表。
  2. .Net 类 - 类似于Int32MathString- C# 文档中提供了一个列表。
于 2013-07-29T13:59:09.350 回答
0

这是重量级的,但你可以看看 Project Roslyn。

看:

以供参考。

另一个可能的选择是 NRefactory:

于 2013-07-29T14:04:27.847 回答