从Action调用ReSharper ContextAction

时间:2012-07-13 19:11:20

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

我想写一个只调用Action的ReSharper ContextAction。这可能吗? ContextActionSolution作为参数,Action在构建时获得DataContext。所以问题真的变成了:

你能从Solution的实例获得当前DataContext吗?

编辑:哎呀!我问错了。以上是真的,但不是真正的问题。就像下面的Dmitri所说,你可以得到这样的解决方案:

var solution = 
  dataContext.GetData(JetBrains.ProjectModel.DataContext.DataConstants.SOLUTION);

棘手的一点是获得_psiModuleICSharpContextDataProvider可以通过ContextAction从构建provider.PsiModule时传入的ICSharpContextDataProvider获得。您可以从PsiModule获得DataContext或正确的{{1}}吗?

2 个答案:

答案 0 :(得分:2)

  var document = context.GetData(DocumentModel.DataConstants.DOCUMENT);
  var solution = context.GetData(JetBrains.ProjectModel.DataContext.DataConstants.SOLUTION);
  var psiModule = document.GetPsiSourceFile(solution).GetPsiModule();

答案 1 :(得分:1)

你可以试试这样的解决方案:

var solution =
  dataContext.GetData(JetBrains.ProjectModel.DataContext.DataConstants.SOLUTION)