我如何获得窗口上下文,以便在resharper插件中创建NavigationOptions

本文关键字:resharper 插件 NavigationOptions 创建 何获得 窗口 上下文 | 更新日期: 2023-09-27 18:00:37

我有一个导航插件,我想扩展它以支持上下文导航。除了NavigationOptions实例之外,我已经得到了所需的一切。在我的INavigateFromHereProvider中,我使用IDataContext进行调用,因此可以使用NavigationOptions.FromDataContext方法从中创建NavigationOptions。太棒了

在我的上下文操作中,我不会被调用IDataContext,而是在构造过程中得到ICSharpContextActionDataProvider。我可以从中获得我的IDeclaredElement来作为导航决策的基础,但我不确定如何创建我的NavigationOptions实例。感觉我应该使用NavigationOptions.FromWindowContext,但我似乎需要PopupWindowContextSource,我不知道从哪里可以买到。

那么,我从哪里可以获得相关的PopupWindowContextSource来创建我的NavigationOptions呢?

我如何获得窗口上下文,以便在resharper插件中创建NavigationOptions

啊,发现了答案(好吧,一个答案)。

我可以使用这个:

 var popupWindowContextSource = solution.GetComponent<MainWindowPopupWindowContext>().Source;

我不确定这是否是最合适的东西,但它似乎有效。

您最好使用NavigationOptions.FromDataContext。这将从您已经获得的IDataContext中提取一个窗口上下文。这应该会为您提供一个弹出窗口上下文,该上下文适合于您被调用的位置——锚定到编辑器窗口或树视图,或者其他什么。使用MainWindowPopupContext将为您提供一个基于Visual Studio主窗口的上下文,该窗口可能正常工作,但可能不是最相关的。