Вот основной код для этого.
static bool IsCodeDefWindow(
IWpfTextView textView,
IVsEditorAdaptersFactoryService editorAdaptersFactoryService,
IVsCodeDefView vsCodeDefView)
{
var vsTextView = editorAdaptersFactoryService.GetViewAdapter(textView);
if (vsTextView == null)
{
// Happens for unshimmed IWpfTextView instances
return false;
}
int isCodeDef;
return
ErrorHandler.Succeeded(vsCodeDefView.IsCodeDefView(vsTextView, out isCodeDef)) &&
isCodeDef != 0;
}
IVsEditorAdaptersFactoryService
- это импортируемый компонент MEF, поэтому он доступен через [Import]
в вашем контейнере MEF.
IVsCodeDefView
- это более старая служба Visual Studio.Если у вас есть IServiceProvider
, он доступен через QueryService
(обязательно используйте SVsServiceProvider
в качестве типа службы и IVsServiceProvider
в качестве интерфейса).