C# + ReSharper = Awesome: Tip #5 – Replace Constructor with Factory Method

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

Tip #5 – Replace Constructor with Factory Method

Use: If an application must control how or when new instances of classes are created, a factory method can achieve this. ReSharper makes it simple to wrap a constructor with a static factory method.

Before
   1:      public class Car
   2:      {
   3:          private IList<IPart> _parts;
   4:   
   5:           public Car(IList<IPart> parts)
   6:           {
   7:               _parts = parts;
   8:           }
   9:      }
Right-click the constructor

image

Name your method or accept the default

SNAGHTML1ecbd865

After
   1:      public class Car
   2:      {
   3:          public static Car CreateCar(IList<IPart> parts)
   4:          {
   5:              return new Car(parts);
   6:          }
   7:   
   8:          private IList<IPart> _parts;
   9:   
  10:          private Car(IList<IPart> parts)
  11:           {
  12:               _parts = parts;
  13:           }
  14:      }

 

Happy coding!

 

C# + ReSharper = Awesome: Tip #4 – Convert Abstract Class to Interface

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

Tip #4 – Convert Abstract Class to Interface

Use: This is used when the class(es) that will be inheriting from a base class also need to inherit from another base class. Derived types can inherit from only one base class but can implement multiple interfaces.

Before
   1:      public abstract class Book
   2:      {
   3:          public abstract string Title { get; set; }
   4:   
   5:          public abstract string Year { get; set; }
   6:   
   7:          public abstract string Author { get; set; }
   8:   
   9:          public abstract void Lend();
  10:   
  11:          public abstract void AddToInventory();
  12:      }
Right-click the class

image

After
   1:      public interface Book
   2:      {
   3:          string Title { get; set; }
   4:          string Year { get; set; }
   5:          string Author { get; set; }
   6:          void Lend();
   7:          void AddToInventory();
   8:      }

Note: Notice that this refactoring does not change the name of the type. At this point, there will be a squiggly line under the interface’s name, Book. Placing the cursor on Book and pressing <Alt+Enter> will prompt ReSharper to rename it to IBook.

 

Happy coding!

 

C# + ReSharper = Awesome: Tip #1 – To Automatic Property

This is the first in a series of quick how-to posts on ReSharper. I love ReSharper. It is a tool that I use every day and don’t really realize how much I rely on it until I use a machine without ReSharper installed.

Tip #1 – To Automatic Property

Use: If a public property does not contain any logic, it can be converted to an auto-property, removing the corresponding private field and replacing usages of the private field.

Before
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public void CheckName()
        {
            if (_name == "Dark Side of the Moon")
                Console.WriteLine("Awesome");
        }

Place your cursor on the Name property and…

Press <Alt-Enter>

image

After
        public string Name { get; set; }

        public void CheckName()
        {
            if (Name == "Dark Side of the Moon")
                Console.WriteLine("Awesome");
        }

Happy coding!

 

del.icio.us Tags: ,
Mastodon
github.com/alvinashcraft