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!

 

Leave a comment

Please be polite and on topic. Your e-mail will never be published.

 

About Me

I am a Philadelphia-area .NET developer, Microsoft MVP, husband, dad, and geek. I am currently a software engineer at Eclipsys Corporation. I have over 15 years of software development experience in the Healthcare and Manufacturing industries.

More...

Categories

Archives