提问人:akbiggs 提问时间:12/19/2012 更新时间:12/19/2012 访问量:3336
如何在 VS2010 中自动添加或删除所有接口实现的方法?
How do I automatically add or remove methods from all implementations of an interface in VS2010?
问:
在我当前的项目中,使用 Visual Studio 2010 和 C#,我经常发现自己必须更新我定义的接口,以添加新的或删除接口的新方法和成员。因此,我必须回顾我的代码库,找到实现接口的所有类,并手动删除所有出现的过时方法和成员,或者通过为每个类选择“实现接口”来添加新方法和成员。这非常乏味,而且会减慢我的工作流程。
有没有办法自动将接口的新方法或成员的占位符实现添加到实现接口的所有类中,而不必遍历每个类?同样,有没有办法在从类实现的接口中删除方法或成员的同时从类中删除它?
答:
3赞
Marc Gravell
12/19/2012
#1
简短的回答:不。
一种可能性是:不更新接口,而是在接口上添加扩展方法,例如:
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);
但是对于常规接口方法:不,没有自动添加它的方法,只需点击“构建”,编译器就会告诉你哪些类型缺少它。将接口实现添加到公共基类通常可以很容易地同时命中多个类型。
要删除该方法:一种方法是使用显式接口实现:
class Foo : ISomeInterface {
void ISomeInterface.SomeMethod(string x) {
....
}
}
现在,如果从 中删除该方法,编译器将告诉您使用它的所有位置。SomeMethod
ISomeInterface
查找所有方法的其他低技术方法包括:SomeMethod
- ctrlshiftf(Global Find) - 技术含量低,但有效......
- 在从接口中删除该方法之前,将其重命名而不使用重构(或其他任何方法): 现在,所有实现此方法的类型都会抱怨它们没有实现,并且所有使用它的类型都会抱怨不存在
SomeMethod_xyz
SomeMethod_xyz
SomeMethod
5赞
RoelF
12/19/2012
#2
如果您使用的是 ReSharper,则只需将方法添加到界面中,单击并选择“将方法添加到派生类”:Alt+Enter
如果要删除方法,可以使用以下功能:Refactor > Safe Delete ...
评论
0赞
akbiggs
12/22/2012
棒。刚开始使用 ReSharper...这个工具很棒。
0赞
voddy
4/3/2014
Telerik JustCode 具有与“将存根添加到所有继承者”和“安全删除”相同的选项
评论