Prevent usage of default constructor
You can just make it private:
private MyClass()
{
}
Alternatively (if you didn't know already) if you just declare a constructor with parameters, the default one isn't added by the compiler, e.g.
private MyClass(string myParameter)
{
//Can't call new MyClass() anymore
}
Make it private.
So,
class SomeClass
{
private SomeClass()
{
}
public SomeClass(int SomeParam)
{
}
}
One thing to mention that others have not. The default constructor should still be able to set up the default implementation bits, to avoid reuse. This is not a problem if it is private, as you can still chain down to a private constructor. You just make it unavailable to outside sources.
private MyClass()
{
}
public MyClass(string something) : this()
{
}
That solves the problem. Note, however, that protected may actually be a preferred implementation if the class is not sealed.
- If everything in the class is static, consider making it a static class. That way, you won't get a constructor at all.
- If you want a parameterless constructor but you don't want it to be public, declare it explicitly and make it private (or internal etc)
- If you don't want a parameterless constructor but do want constructors with parameters, then just declare the parameterized constructor - the default constructor won't be generated for you
I think that should cover all bases...