Is there a way to prevent the usage of the default constructor?
All I can think of is throwing an exception, but I would like something that causes a compile time er
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)
{
}
}
Aside from other answers, you can read following text, for more info on Singleton pattern, and some examples. Singleton pattern relies on constructor being private.
http://www.yoda.arachsys.com/csharp/singleton.html
I think that should cover all bases...
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.