为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Resharper SDK 查找 ITypeElement

使用 Resharper SDK 查找 ITypeElement

C#
江户川乱折腾 2022-11-13 14:41:00
我正在尝试使用 Resharper SDK 插件创建自定义导航插件。当我站在我的类型上时,我已经设法获得了 IDeclaredElement 或 ITypeElementvar 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 文档非常少,我找不到任何关于这个主题的内容。谢谢
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

经过反复试验,我找到了一个可行的解决方案。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();

完整代码在这里


查看完整回答
反对 回复 2022-11-13
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号