C# + ReSharper = Awesome: Tip #6 – Extract Interface

This is the sixth in a series of quick how-to articles on ReSharper.

Tip #6 – Extract Interface

Use: Creates a new interface based on the selected class and updates the class to implement the new interface. This is most useful when working with an existing code base because we all define our interfaces first when doing greenfield development, right?  Smile

Before
   1:      public class Shooter
   2:      {
   3:          public string Name { get; set; }
   4:   
   5:          public string ReleaseDate { get; set; }
   6:   
   7:          public int MaxPlayers { get; set; }
   8:   
   9:          public bool HasZombies { get; set; }
  10:   
  11:          public bool IsHalo { get; set; }
  12:   
  13:          public void Borrow()
  14:          {
  15:              //TODO: Implement borrow logic.
  16:          }
  17:      }
Right-click the class

image

Select members

SNAGHTML4614fae1

After
   1:      public interface IGame
   2:      {
   3:          string Name { get; set; }
   4:          string ReleaseDate { get; set; }
   5:          int MaxPlayers { get; set; }
   6:          void Borrow();
   7:      }
   8:   
   9:      public class Shooter : IGame
  10:      {
  11:          public string Name { get; set; }
  12:   
  13:          public string ReleaseDate { get; set; }
  14:   
  15:          public int MaxPlayers { get; set; }
  16:   
  17:          public bool HasZombies { get; set; }
  18:   
  19:          public bool IsHalo { get; set; }
  20:   
  21:          public void Borrow()
  22:          {
  23:              //TODO: Implement borrow logic.
  24:          }
  25:      }

Happy coding!

 

Dew Drop – January 9, 2012 (#1,237)

Top Links

 

.NET / Visual Studio

 

Web Development

 

Design / Methodology / Testing

 

Silverlight / WPF / Windows Phone

 

Podcasts / Screencasts / Videos

 

Community / Events

 

Database

 

PowerShell

 

Miscellaneous

 

More Link Collections

 

The Geek Shelf

CoffeeScript: Accelerated JavaScript Development by Trevor Burnham

 

Mastodon
github.com/alvinashcraft