Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在VS2010中从接口的所有实现中自动添加或删除方法?_C#_Visual Studio 2010_Shortcut - Fatal编程技术网

C# 如何在VS2010中从接口的所有实现中自动添加或删除方法?

C# 如何在VS2010中从接口的所有实现中自动添加或删除方法?,c#,visual-studio-2010,shortcut,C#,Visual Studio 2010,Shortcut,在我当前的项目中,使用Visual Studio 2010和C#,我经常发现自己必须更新我定义的接口,以添加新的或删除旧的方法和接口成员。因此,我必须回顾我的代码库,找到实现接口的所有类,手动删除所有过时方法和成员,或者通过为每个类选择“实现接口”来添加新的方法和成员。这非常乏味,而且会减慢我的工作流程 是否有任何方法可以自动将接口的新方法或成员的占位符实现添加到实现接口的所有类中,而不必遍历每个类?类似地,在我从类实现的接口中删除方法或成员的同时,是否有任何方法可以从类中删除该方法或成员?简短

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

是否有任何方法可以自动将接口的新方法或成员的占位符实现添加到实现接口的所有类中,而不必遍历每个类?类似地,在我从类实现的接口中删除方法或成员的同时,是否有任何方法可以从类中删除该方法或成员?

简短回答:否

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

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

但是对于常规接口方法:不,没有自动添加它的方法,只需点击“build”,编译器就会告诉您哪些类型缺少它。将接口实现添加到公共基类通常会使同时命中多个类型变得容易

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

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

寻找所有
somethod
方法的其他低技术方法包括:

  • ctrlshiftf(全球查找)-技术含量低,但工作正常
  • 在从接口中删除该方法之前,请将其重命名为,而不使用重构将其重命名为
    SomeMethod\u xyz
    (或其他内容):现在,所有实现该方法的类型都会抱怨它们没有实现
    SomeMethod\u xyz
    ,所有使用这种方法的类型都会抱怨
    SomeMethod
    不存在
如果您正在使用,只需将方法添加到界面,单击
Alt+Enter
并选择“将方法添加到派生类”:

如果要删除某个方法,可以使用
重构>安全删除…
功能:


我不这么认为。但是,从当前VS行为中获得的好处是,当您向接口添加方法时,将出现编译时错误,这真是太棒了。因此,您知道必须在派生类中实现它们。虽然删除可能不会从中受益,但它也不会给您带来任何问题,因为在子类中有一个冗余方法对编译器来说是可以的。现在,我认为整形器可以告诉你们,若你们有多余的方法,你们可以很容易地删除他们..真棒。刚开始使用ReSharper…这个工具很棒。Telerik JustCode有与“向所有继承者添加存根”和“安全删除”相同的选项
ISomeInterface x = ...
x.DoTheAwesomez(20);
class Foo : ISomeInterface {
    void ISomeInterface.SomeMethod(string x) {
         ....
    }
}