A while back, I talked with someone about using the Singleton Design Pattern vs. using an IoC container and registering your class as singleton.
IoC containers are regularly bootstrapped wrongly, resulting in your product not working as it should. And you don’t discover that until you startup the product. I’d rather use the Singleton Pattern. That way, the compiler will protect against errors.