Расширение Visual Studio, Передача объектов из VSPackage в IOleCommandTarget

Я создал объект, который использует DTE для доступа к файлам в решении Visual Studio и анализирует их для извлечения информации для реализации новых функций, которые я реализую. Этот объект также использует DTE Events для обнаружения изменений содержимого решения. По этой причине объект находится в области VSPackage. Тем не менее, мне нужна информация, которую объект собирает внутри IOleCommandTarget, где реализованы функции. Я пытался найти способ передать этот объект из VSPackage в IOleCommandTarget, но до сих пор я пришел пустой. Я попытался определить область объекта в IOleCommandTarget, но это не работает, потому что события DTE не будут запускаться из-за области действия или сборки мусора, я думаю.

Вот мой поставщик IOleCommandTarget:

internal class VerilogCommandAndControlHandlerProvider : IVsTextViewCreationListener
{
    [Import]
    internal IVsEditorAdaptersFactoryService AdapterService = null;
    [Import]
    internal ICompletionBroker CompletionBroker { get; set; }
    [Import]
    internal SVsServiceProvider ServiceProvider { get; set; }

    public void VsTextViewCreated(IVsTextView textViewAdapter)
    {
        ITextView textView = AdapterService.GetWpfTextView(textViewAdapter);
        if (textView == null)
            return;

        DTE dte = ((DTE)ServiceProvider.GetService(typeof(DTE)));

        Func<VerilogCommandAndControlHandler> createCommandHandler = delegate () { return new VerilogCommandAndControlHandler(textViewAdapter, textView, dte, this); };
        textView.Properties.GetOrCreateSingletonProperty(createCommandHandler);
    }

}

0 ответов

Другие вопросы по тегам