2

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

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

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

4

3 回答 3

3

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

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

继续单击[Find Next]以查找下一个类声明的出现。如果搜索突出显示您要修改的 60 个声明之一,请单击[Replace],否则继续单击[Find Next]

于 2012-09-07T15:11:40.987 回答
1

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

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

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

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

$1 : yourBaseClassName {

这已经使用这个在线正则表达式验证器进行了测试,它处理 js 正则表达式,并假设您的文件尚未实现子类/接口。原始的,但可以作为一个起点。

于 2012-09-07T15:30:04.227 回答
0

您可以编写一个工具并将其用作预构建事件

该工具可以是一个简单的静默命令行可执行文件,它: MyBaseClass会在任何看起来像这样的内容的右侧写入:class MyClassName.
它会将路径作为参数,并针对在其中找到的每个 *.cs 文件执行此操作。

据我所知,这是最接近您想要实现的目标。

您也可以尝试使用 AOP(面向属性的编程),使用PostSharp(不是免费的)之类的工具,但是您必须使用属性标记每个类,这违背了您的目的。

于 2012-09-07T15:06:52.187 回答