有没有办法编辑文件夹中的所有类以从某些基类继承?

时间:2012-09-07 14:59:31

标签: c# visual-studio resharper

我在一个文件夹中有60个左右的类,我为这些继承的类创建了一个基类。

除了在Visual Studio中复制和粘贴方法外,还有其他自动方法吗?

我希望resharper有一些功能,但找不到。

3 个答案:

答案 0 :(得分:3)

您可以使用Visual Studio的搜索和替换功能自动执行剪切/粘贴过程,以查找所有声明,并将其替换为从基类继承的声明。

  • 按[Ctrl + H]打开“快速替换”
  • 在“查找内容”框中输入public class {:i}
  • 在“替换为:”框中输入public class \1 : MyBaseClass
  • 在“查找范围:”框中选择“当前项目”
  • 选中“使用:”复选框,然后在下拉列表中选择“正则表达式”

继续点击[Find Next]以查找下一次类声明。如果搜索突出显示您要修改的六十个声明中的一个,请点击[Replace],否则请点击[Find Next]

答案 1 :(得分:1)

这个正则表达式可以解决这个问题:

(.*)?(class .*)?(.*)?{

它匹配任意数量的字符,后跟单词'class',后跟任意数量的字符,后跟一个大括号。

在所有代码文件中执行替换,将其替换为替换文本:

$1 : yourBaseClassName {

已经使用this在线regexp验证器对其进行了测试,该验证器处理js regexp,并假设您的文件已经实现了子类/接口。原始,但可以作为一个起点。

答案 2 :(得分:0)

您可以编写工具并将其用作pre build event

该工具可以是一个简单的静默命令行可执行文件,它将: MyBaseClass写在任何看起来像class MyClassName的内容的右侧。
它需要一个路径作为参数,并为它在那里找到的每个* .cs文件执行。

据我所知,这是你想要达到的最接近的。

你也可以尝试使用像PostSharp这样的工具(不是免费的)来利用AOP(面向属性的编程),但是你必须使用属性来标记每个类,这会破坏你的目的。