Singletons should not be used in the same way as static classes. In essense,
MyStaticClass.GetInstance().DoSomething();
is essentially the same as
MyStaticClass.DoSomething();
What you should actually be doing is treating the singleton as just another object. If a service requires an instance of the singleton type, then pass that instance in the constructor:
var svc = new MyComplexServce(MyStaticClass.GetInstance());
The service should not be aware that the object is a singleton, and should treat the object as just an object.
The object can certainly be implemented, as an implementation detail and as an aspect of overall configuration, as a singleton if that makes things easier. But the things that use the object should not have to know whether the object is a singleton or not.