C# 如何对这个泛型扩展方法进行Resharper结构搜索?
是否有人可以指导我创建针对以下签名的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
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警告或错误,以便团队在意外使用此模式时收到警报。