根据typeof搜索和替换

时间:2015-04-16 05:27:14

标签: c# search visual-studio-2013 replace resharper

我希望有人知道如何使用visual studio 2013按类型查找文本并替换它们。例如,我有一个使用运算符重载来乘法的结构。所以在整个程序中我都有语句/表达式,比如struct * struct。

我想改变所有这些以使用方法;例如,我想更改以下内容:

Vectro3 a;
Vector3 b;

Vector3 c = a * b;

为:

Vector3 a;
Vector3 b;

Vector3 c = Vector3.Mul(a, b);

有没有办法可以搜索Vector3类型只在哪里加倍Vector3而不是例如float float浮点数然后用其他东西替换它?

我需要将其更改为方法的原因是因为我将使用程序来内联计算而不是使用运算符或方法。我有大约8000多个案例,所以手动这样做会很痛苦。

我真的希望有人知道可以做到这一点的技术或程序。我在Resharper的Refactor中尝试了搜索模式,但是这个加载项使我的整个代码混乱。我可能错了,如果有人知道如何在Refactor中使用搜索模式进行上述操作,请告诉我。

提前致谢!

2 个答案:

答案 0 :(得分:1)

一种可能性:在Vector3上打破*的运算符重载,然后重建。无论您在何处使用重载*,这都会给您带来错误。修复那些。它不像一次修复它们那么好,但至少它很快就能找到它们。

另一种可能性。当我在解决方案资源管理器中下载一个类时,我可以下载到我获得其方法列表的位置。然后,我可以右键单击某个方法,然后选择“Is Called By”或“Is By By”。同样,这不会为你做替换,但它应该有助于找到所有用途,这仍然是一个帮助。

答案 1 :(得分:1)

您应该可以在ReSharper中使用Structural Search and Replace pattern。类似的东西:

Vector3 $id$ = $exp1$ * $exp2$

$id$是标识符占位符,您几乎可以忽略它。 $exp1$$exp2$是表达式占位符,其类型为Vector3(但具有完全限定的类型名称)。这应该足以找到所有乘法实例。

然后您可以创建替换模式:

Vector3 $id$ = Vector3.Mul($exp1$, $exp2$)

和ReSharper将替换匹配find模式的代码,替换原始标识符,以及原始表达式(这些可以是表达式,例如方法调用的返回值,而不仅仅是局部变量)。