2010-04-19 63 views
3

使用Visual Studio时,很容易从我自己编写的类中提取接口。我右键单击课程并选择“重构”,然后选择“提取接口”。从.NEt中提取接口系统类

我们假设我想创建一个ConfigurationManager包装器并围绕它编写一些测试。一个快速的方法是从ConfigurationManager中提取一个接口,方法是右键单击它,然后选择'Go To Definition',然后从类内部选择'Refactor',然后选择'Extract Interface'。然后,我会简单地创建我的包装类,从我新创建的接口继承,然后实现它,并且我有一个很好的包装类的起点。

但是,从任何.NET系统类中提取接口是不可能的,可能是因为它只是关于类的元数据而不是类本身(或者我做错了)。

有没有一种简单的方法来做我想要完成的事情?我想确保我不会浪费时间输入我不需要输入的内容。

感谢

回答

3

的问题是没有这么多,提取的界面 - 你也可以这样做“手” 但是你没有办法告诉系统定义配置管理器实现,因为此接口的CLR这个(meta-)信息存储在你不能修改的框架程序集中。

编辑:

为缓解“手工提取”你可以用右边的按钮上的类型单击,然后选择“转到定义”。 Visual Studio从元数据中创建一个类定义(没有实现)。然后,您可以使用复制并粘贴到一个新文件。不管怎样,你还是得做手工一些修改

  • 通过interface
  • 删除更换class关键字的所有非公开的方法/属性
  • 删除publicoverride访问修饰符(它们是无效一个接口定义)

这个可以用搜索&替换。你甚至会用这种方法获得文档字符串。

+0

没错,但我想知道是否有更快的方法从任何.NET系统类(如ConfigurationManager)中提取接口,而无需“手动”操作。 – Thomas 2010-04-19 07:21:03

+0

谢谢马丁。你知道Resharper或其他VS插件是否适合从元数据中提取类? – Thomas 2010-04-19 21:57:57

+0

对不起,我不知道有任何现有的插件可以做到这一点,但编写一个不应该太困难...... – MartinStettner 2010-04-20 07:58:25