C# 如何对这个泛型扩展方法进行Resharper结构搜索?

C# 如何对这个泛型扩展方法进行Resharper结构搜索?,c#,resharper,system.reactive,C#,Resharper,System.reactive,是否有人可以指导我创建针对以下签名的resharper结构搜索: namespace System { public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext); } 名称空间系统 { 公共静态IDisposable订阅(此IObservable源,操作onNext); } 我试图检测rx subscribe函数重载的使用,因为它没有指定onEr

是否有人可以指导我创建针对以下签名的resharper结构搜索:

namespace System
{
public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext);
}
名称空间系统
{
公共静态IDisposable订阅(此IObservable源,操作onNext);
}
我试图检测rx subscribe函数重载的使用,因为它没有指定onError处理程序,这会在不好的地方导致异常。因此,我想在T

我尝试了一些选项,但似乎无法使其与此泛型类型的特定实例类型匹配。我的尝试只与显式使用IObservable的泛型方法相匹配,而不是像IObservable这样的专门化方法

例如,我尝试过:

Subscribe(System.IObservable<$type$>, Action<$type$>)
订阅(System.IObservable,操作)
其中,$type$只是一个没有特定类型的类型占位符

谢谢

我想你想要

Subscribe($id0$, $id1$)

在这里,从下拉菜单中,将$id0$和$id1$限制为特定类型的参数

我很难从结构化搜索中获得任何有用的结果。使用泛型并不好

我想知道正则表达式搜索是否有用。这为我找到了很多候选人:

\.Subscribe\([^,]*\)(?!,) 
它的逻辑是查找以“.Subscribe”(“然后在a之前不要有逗号”)开头的字符串。它后面没有逗号。这有点复杂,但似乎可以很好地处理OnNext表达式非常重要的情况。使用它的风险自负,因为它显然不是完美的

另外,不要忘记仅针对
OnNext
OnCompleted
处理程序的Subscribe扩展方法

编辑


正如OP评论中所提到的,R#的“查找用法”也很有效,可能比这更好——但我无法在结构化搜索中找到一个等效的方法来工作。

目前还不可能,因此jetbrains已经开了一张罚单


为什么你不能简单地要求ReSharper列出该方法的用法?为什么你必须对其进行“结构化搜索”?结构化搜索允许创建ReSharper警告或错误,以便团队在意外使用此模式时收到警报。