我如何获得窗口上下文,以便在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
呢?
啊,发现了答案(好吧,一个答案)。
我可以使用这个:
var popupWindowContextSource = solution.GetComponent<MainWindowPopupWindowContext>().Source;
我不确定这是否是最合适的东西,但它似乎有效。
您最好使用NavigationOptions.FromDataContext
。这将从您已经获得的IDataContext
中提取一个窗口上下文。这应该会为您提供一个弹出窗口上下文,该上下文适合于您被调用的位置——锚定到编辑器窗口或树视图,或者其他什么。使用MainWindowPopupContext
将为您提供一个基于Visual Studio主窗口的上下文,该窗口可能正常工作,但可能不是最相关的。