实现Visual Studio Intellisense

Bol*_*ait 13 c# intellisense

我正在尝试将基于richtextbox控件的Intellisense添加到C#代码编辑器中.到目前为止,我已经解析了输入的文本以查找所有变量及其类型(效果很好).下拉框效果很好.我无法得到的是下拉列表框的正确选项列表.

如何以编程方式获取以下列表:

替代文字

我已经编译了变量及其类型的列表,所以当用户按下时.我知道我有一个c类型的变量Color.我只需要知道要调用哪个函数来获取下拉框所需的列表.

我尝试过这段代码:http://www.codeproject.com/KB/cs/diy-intellisense.aspx但无法使其正常工作.我还在StackOverflow上阅读了大量其他线程但无济于事.我真的想完成这个而不是使用别人的插件编辑器组件.

任何提示将不胜感激.谢谢.

Jus*_*ner 4

如果您知道该类型,您应该能够反思该类型并获得所需的所有信息。

Type.GetMembers可能是您最好的选择。您可能还需要第二次调用才能获取任何静态方法:

var instanceMembers = typeof(Color)
                      .GetMembers(BindingFlags.Instance | BindingFlags.Public);

var staticMembers = typeof(Color)
                    .GetMembers(BindingFlags.Static | BindingFlags.Public);
Run Code Online (Sandbox Code Playgroud)

每个 MemberInfo 对象都能够告诉您 MemberType(属性、字段、方法、事件等)

instanceMembers只需在用户键入变量(如c您的示例中)时使用,.然后使用 ,并staticMembers在用户键入类型名称(如Color您的示例中)时使用 ,然后使用.