从现有类生成接口

San*_*ndy 55 c# visual-studio

我有一个班级:

Class MyClass
{
   public MyClass { ... }
   public string Name { get { ... } }
   public int IdNumber { get { ... } set { ... } }
   public void GenerateNme {...}
}
Run Code Online (Sandbox Code Playgroud)

它只是一个示例类.我希望从中生成Interface.就像,MyClass正在实现IMyClass接口.我希望输出

public Interface IMyClass
{
   string Name { get; }

   int IdNumber { get; set; }

   void GenerateNumber();
}
Run Code Online (Sandbox Code Playgroud)

MyClass : IMyClass
{

}
Run Code Online (Sandbox Code Playgroud)

它可以手动完成,但我只是很想知道,有没有其他简单的方法来完成这个?如果不清楚,请发表评论.

谢谢.

ken*_*n2k 106

是的,您可以使用Visual Studio从类中提取接口:

在目标类文件中:右键单击 > 重构 > 提取接口...

在此输入图像描述

然后

在此输入图像描述

  • @KevinDeus所以你真的认为"这个答案没有帮助,实际上应该被投票"? (6认同)
  • 重构在 VS2017 中不可用 (4认同)
  • 在VS2017中单击代码中的类名,右键单击,选择“快速操作和重构”,选择“提取接口” (4认同)
  • 在(VS 2019)中:不幸的是,这仅在第一次有效。一旦生成了接口并在类中添加了一些新方法,那么您就无法通过某些选项自动添加这些新方法,即使您再次删除该接口及其 .cs 文件并尝试创建新的接口,但不知何故 Visual Studio 仍然保留生成空白 inteface ,看起来它将此信息保存在之前创建过的 iterface 的某个地方。 (3认同)

cdi*_*die 41

在Visual Studio 2015/2017/2019中,这是在"快速操作"菜单下(Ctrl+句点.)

务必将光标放在要从中提取界面的类名中.否则,它显示"此处没有可用的快速操作".

注意:只有在实际可以提取界面时才可以这样做.例如,如果您的类只有静态方法,那么这将无效.


Mat*_*eid 13

在Visual Studio 2010中,您可以右键单击MyClass并选择Refactor"Extract Interface ..."(Ctrl+ R,I).这将为您提供一个窗口来检查要提取的成员.


d21*_*219 11

在最新版本的 Visual Studio(2019 和 2022)中,菜单项已根据已接受的答案进行了重命名。现在如何访问弹出界面的完整列表如下(仅列出的第一个与早期版本相比发生了变化):

  • 右键单击类的名称,然后选择“快速操作和重构...”菜单选项(而不是像早期版本中的“重构”)。然后会出现另一个菜单,选择提取界面...。

    快速操作和重构弹出菜单

  • 将光标放在类的名称上,然后按住Ctrl.选择“提取接口...”菜单选项。

    提取界面弹出菜单

  • 前往“编辑”菜单项,然后选择“重构提取接口”(您不需要为此选择类名称,操作将在您打开的类上执行)

    提取界面完整菜单

  • 按住Ctrl然后连续按下R和(同样,该操作将在您打开的课程上执行)I

执行上述四个操作中的任何一个都会打开提取界面窗口(这与早期版本基本没有变化,尽管您可以选择将接口添加到当前文件中)

提取界面窗口