【问题标题】:Find usages of ITypeElement, or IDeclaredElement with Resharper SDK使用 Resharper SDK 查找 ITypeElement 或 IDeclaredElement 的用法
【发布时间】:2019-03-26 08:50:19
【问题描述】:

我正在尝试使用 Resharper SDK 插件创建自定义导航插件。当我站在我的类型上时,我设法获得了 IDeclaredElement 或 ITypeElement

var referenceName = dataContext.GetSelectedTreeNode<IReferenceName>();
var declaration = referenceName?.Reference.Resolve()?.DeclaredElement as ITypeElement;
if (declaration != null)
{
    //TODO: Find all usages here and check if my type is used as single argument to a method (Visitor pattern)
}

SDK 文档非常稀少,我没有找到任何关于该主题的内容。谢谢

【问题讨论】:

    标签: c# resharper resharper-sdk


    【解决方案1】:

    经过反复试验,我找到了一个可行的解决方案。 IFinder.FindAllReferences

    var foundMethods = declaration
        .GetPsiServices()
        .Finder
        .FindAllReferences(declaration)
        .Select(r => ((r.GetTreeNode().Parent as IUserTypeUsage)?
            .Parent as IRegularParameterDeclaration)?
            .Parent as IFormalParameterList)
        .Where(list => list != null && list.ParameterDeclarations.Count == 1)
        .Select(m => m.Parent as IMethodDeclaration)
        .Where(m => m != null)
        .ToList();
    

    完整代码here

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多