3

在我当前的项目中,使用 Visual Studio 2010 和 C#,我经常发现自己必须更新已定义的接口,以添加新的或删除旧的方法和接口成员。结果,我必须回顾我的代码库,找到所有实现接口的类,并手动删除所有过时的方法和成员,或者通过为每个类选择“实现接口”来添加新的方法和成员。这非常乏味,并且减慢了我的工作流程。

有没有办法自动将新方法或接口成员的占位符实现添加到实现接口的所有类,而不必遍历每个类?同样,有什么方法可以在从类实现的接口中删除方法或成员的同时从类中删除它?

4

2 回答 2

5

如果您使用的是ReSharper,您只需将方法添加到界面,单击Alt+Enter并选择“将方法添加到派生类”:

向接口添加方法

如果要删除方法,则可以使用Refactor > Safe Delete ...以下功能:

安全删除

于 2012-12-19T10:09:24.233 回答
3

简短的回答:没有。

一种可能是:不更新接口,而是在接口上添加扩展方法,例如:

public static class SomeUtilityClass
{
    public static void DoTheAwesomez(this ISomeInterface obj, int count)
    {
        for(int i = 0 ; i < count ; i++)
        {
            obj.Foo();
            obj.Bar();
        }
    }
}

那么如果你有:

ISomeInterface x = ...
x.DoTheAwesomez(20);

但是对于常规的接口方法:不,没有自动添加它的方法,只需点击“build”,编译器就会告诉你哪些类型缺少它。将接口实现添加到公共基类通常可以轻松地同时命中多种类型。

删除方法:一种方法是使用显式接口实现

class Foo : ISomeInterface {
    void ISomeInterface.SomeMethod(string x) {
         ....
    }
}

现在,如果您SomeMethod从 中删除该方法ISomeInterface,编译器将告诉您使用它的所有位置。

找到所有方法的其他低技术SomeMethod方法包括:

  • ctrlshiftf(全球发现) - 技术含量低,但有效......
  • 就在你从接口中删除方法之前,重命名它而不使用重构SomeMethod_xyz或其他):现在,所有实现 this 的类型都会抱怨他们没有实现SomeMethod_xyz,所有使用this 的类型都会抱怨SomeMethod没有'不存在
于 2012-12-19T06:59:54.603 回答