2010-04-19 50 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