如何对此通用扩展方法执行Resharper结构搜索?

时间:2014-03-07 17:22:10

标签: c# resharper system.reactive

任何人都可以指导我为以下签名创建resharper结构搜索:

namespace System
{
public static IDisposable Subscribe<T>(this IObservable<T> source, Action<T> onNext);
}

我正在尝试检测rx subscribe函数的这个重载的使用,因为它没有指定onError处理程序,这会导致错误的地方出现异常。因此,我希望匹配T的任何专业化。

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

我曾尝试过:

Subscribe(System.IObservable<$type$>, Action<$type$>)

其中$ type $只是一个没有特定类型的类型占位符。

由于

3 个答案:

答案 0 :(得分:1)

我努力从结构化搜索中获得任何有用的结果。对于泛型来说,它并不是很好。

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

\.Subscribe\([^,]*\)(?!,) 

其中包含查找字符串的逻辑,该字符串以“.Subscribe(”,然后在没有逗号的情况下直到“)”之后找不到逗号。这有点令人费解,但似乎处理OnNext表达式非常简单的情况。使用风险自然,因为它显然不会是完美的。

另外,请不要忘记仅OnNextOnCompleted处理程序的订阅扩展程序方法。

修改

正如OP评论中所提到的,R#的“查找用法”也有效,可能比这更好 - 但我无法在结构化搜索中获得相同的效果。

答案 1 :(得分:0)

我想你想要

Subscribe($id0$, $id1$)

你从下拉菜单中限制$ id0 $和$ id1 $成为特定类型的参数

答案 2 :(得分:0)

目前还不可能,所以jetbrains开了一张票。

http://youtrack.jetbrains.com/issue/RSRP-409075