When should i use Private constractor with factory method? - C#