【问题标题】:How do I get a window context so I can create NavigationOptions in a resharper plugin如何获取窗口上下文,以便可以在 resharper 插件中创建 NavigationOptions
【发布时间】:2015-07-01 17:38:07
【问题描述】:

我有一个navigation plugin,我想扩展它以支持上下文导航。除了 NavigationOptions 实例之外,我拥有所需的一切。在我的INavigateFromHereProvider 中,我使用IDataContext 调用,因此可以使用NavigationOptions.FromDataContext 方法从中创建NavigationOptions。伟大的。

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

那么我在哪里可以获得相关的PopupWindowContextSource 来创建我的NavigationOptions

【问题讨论】:

    标签: c# resharper resharper-plugins resharper-8.2


    【解决方案1】:

    啊,找到了答案(嗯,一个答案)。

    我可以用这个:

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

    我不确定这是否最适合使用,但它似乎有效。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我现在没有IDataContext。我正在添加对通过 Alt-Enter(上下文操作)进行导航的支持,因此在我的 IsAvailable(IUserDataHolder cache) 方法中,我只能访问构造函数中给出的 ICSharpContextActionDataProvider
      • 就是在这个方法中我想得到一个popupwindowcontextsource
      • 糟糕。误读了问题。我认为使用MainWindowPopupContext 很好,那么,或者您甚至可以创建自己的派生自PopupWindowContext
      猜你喜欢
      • 2017-09-23
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 2010-10-09
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多