Расширение 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);
}
}