Ответ 1
Существует несколько типов точек расширяемости IntelliSence
, которые необходимо использовать для каждого из следующих случаев:
-
Инструментальная подсказка, показанная при наведении текстового элемента, называется
QuickInfo
инструментом и может быть реализована самостоятельно через наследование изIQuickInfoSource
и создавая соответствующийIIntellisenseController
. Полный проход можно найти в MSDN:-
Пример:
-
Обязательно сделайте
IQuickInfoSourceProvider
загружатьIQuickInfoSource
до по умолчаниюVisual-Studio
один с помощью атрибутаOrder
- в противном случае значение по умолчаниюQuickInfo
не будет показано:[Order(Before = "Default Quick Info Presenter")]
-
-
Инструмент, показанный при записи имени метода, который показывает его подпись, называется
Signature Help
и может быть реализован путем наследованияISignatureHelpSource
очень похоже на инструментQuickInfo
. Полное прохождение можно найти в MSDN: -
Code Snippets
- которые не имеют отношения к вам. -
Statement Completions
- которые вам не подходят.
Обратите внимание, что вам нужно будет сделать IClassifier
в вашем проекте для подсказок, которые будут отображаться, с помощью этого вы также можете изменить представление, чтобы Exceptions
отображалось по-другому, как вы пожелаете. Руководство по MSDN.
Получение информации о методах, с другой стороны, зависит от вас. вы можете использовать внешний ручной источник и использовать его в своем IQuickInfoSource
или прочитать его из соответствующего документа XML Comment
, проанализировав прочитанное слово ITextStructureNavigator
, используя Roslyn
над документом кода, который вы просматриваете.
Извините, если это был небольшой абстрактный ответ, но это очень широкий вопрос, и есть много способов реализовать такое расширение.
P.S.: Мне удалось сделать подобное расширение в низком качестве, чтобы изучить это поле, поэтому, если у вас есть какие-либо следующие вопросы о самой реализации, не стесняйтесь спрашивать.