我有一个包含太多行代码的类。因此,我试图在不破坏公共(public) API 的情况下将其重构为更小的功能 block 。
假设我们有这段代码
class MyClass
{
public static void DoSomething() { ... }
}
现在我想将该方法移动到另一个类中,不会破坏现有代码。因此,该方法的客户仍然应该能够引用旧方法,然后旧方法只调用新类中的新方法。
当然我可以标记方法主体,“提取方法”(来自 R#),最后标记旧方法 Obsolete
。然而,在数百种方法上这样做非常烦人。
我正在寻找类似于 Resharpers Refactor-->Move 的东西,但是根本不触及现有代码,以免破坏我的程序集的客户。
所以最后我需要这个:
class NewClass
{
public static void DoSomething() { ... }
}
class LegacyClass
{
public static void DoSomething() { NewClass.DoSomething(); }
}
最佳答案
我这样做的方式是:
1.使用Resharper从原始类创建一个接口(interface)。
2. 将原来的类(class)拆分成新的类(class)。
3. 把接口(interface)变成原来类的外壳。
4.在Notepad++中使用键盘宏来转:
void DoSomething();
进入
public void DoSomething() { NewClass.DoSomething(); }
虽然这不适用于静态方法。
OTOH,你可能想多了。 “数百”听起来很多,但每个功能需要 10 秒,手动完成可能只需要一个小时左右。与尝试自动化或寻找完美解决方案相比,您花费的钱很容易。
关于c# - 将代码移动到其他类,同时保留 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024103/