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
Name your method or accept the default
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!
What is the benefit we derived by doing this ? Instead of “new”, now i have to call CreateCar. But what I achieve by doing this ?
You could use it to register the instance somewhere central or maybe to return a subclass of the type that implements the factory pattern. Its just an additional layer before the creation.