c# - 我在哪里或如何获得 C# 保留字/方法/命名空间/...的完整列表以进行自动完成

标签 c# reflection autocomplete

我正在为 C# 语言做一个自动完成编辑器,需要获取 C# 中的所有单词/方法/命名空间/属性。 没有在谷歌中找到任何有用的东西。 还尝试了反射,但无法在 System 或其他 namespace 之后获取 namespace 等所有项目。

互联网上是否有包含所有这些内容的字典,或者是否有一种方法可以通过反射来完成?

例如: 用户正在输入系统。

自动完成发现 System 作为命名空间并显示其中的所有类型/方法和命名空间。

或者用户正在输入位图(如果我找不到作为根类型的位图,那么我将尝试使用 XXX.YYY 的所有组合,例如 XXX.YYY.Bitmap...)

谢谢

附言请不要向我推荐 MSDN,因为我已经知道它,这将是最后也是最糟糕的选择,递归地解析 MSDN 上的所有信息并将其保存在数据库中。

最佳答案

根据@Steve Wellens 的评论,C# 和 .NET 类型名称之间存在差异。您有两个截然不同的问题需要处理:-

  1. 获得 C# 知识 - 将使您的编辑了解 C# 关键字等。这可以在 C# language spec 中找到。 ,根据@Cody Gray 的回答。这不会根据您正在编辑的特定文件的上下文而有所不同(除非您希望您的编辑器可以选择能够限制为旧版本的 C#,在这种情况下,您将需要了解以前版本的规范).

  2. 了解当前编辑上下文中可用的类型。为此,您需要知道当前文件中的 using 语句中声明了哪些 namespace ,以及包含当前文件的项目引用了哪些库。试图在全局范围内为每个可用的图书馆找到所有这些信息是没有意义的,因为信息量太大并且不断变化。您或许可以了解 GAC 中可用的所有类型名称。在部分类型名的情况下,例如Bitmap,一个简单的实现将使用文件中包含的 using 语句来尝试通过检查包含当前文件(可能会发生冲突,需要用户解决,例如,在部分类型名称前加上实际命名空间的更多元素)。这就是 Visual Studio 编辑器的工作方式。更丰富的实现可以检查包含当前文件的项目引用的所有程序集以及 GAC 中包含的所有程序集,如果需要,建议将完整 namespace 添加到类型名称或添加using 语句。这就是 Resharper 的工作原理。

关于c# - 我在哪里或如何获得 C# 保留字/方法/命名空间/...的完整列表以进行自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552326/

相关文章:

c# - 在 'Any CPU' .NET 程序集上强制执行 x86 CLR

vb.net - .NET - 有没有办法以编程方式填充强类型数据集中的所有表?

c# - 使用反射调用控件的 Validate() 方法

javascript - jQuery 快速搜索通过 onAfter 函数调用突出显示结果?

eclipse - 用于 Eclipse 的 ScalaIDE : How can I autocomplete from libraries?

c# - 如何在不使用 .NET 显式调用 Close 方法的情况下关闭 Sqlite 连接

c# - SQL 语法错误(INSERT 命令)

.net - 如何在另一个程序集中获取内部静态类的类?

ios - 在 iPad 上实现自动完成

c# - Asp.Net MVC 中强类型 View 数据到底是什么