Шаблон проектирования синглтона является большим анти-шаблоном, потому что нет способа внедрить зависимости в синглтоне. Это, однако, не означает, что не существует способа иметь один экземпляр в течение жизненного цикла приложения, но для этого не следует использовать шаблон проектирования синглтона. Особенно при использовании внедрения зависимостей нет причин использовать этот шаблон проектирования.
Просто внедрите экземпляр этого типа в качестве конструктора в типы, которые зависят от него, и все готово. Это дает вам возможность построить граф объектов в верхней части вашего приложения, контролировать образ жизни и внедрять зависимости в этот экземпляр.
Дизайн этого класса должен быть таким же, как и у любого другого класса:
public class SomeService : ISomeService
{
private ISomeDependency _dependency;
public ISomeService(ISomeDependency dependency)
{
_dependency = dependency;
}
// ISomeService members here
}
Система внедрения зависимостей позволит вам очень легко определить образ жизни любого типа. Для простых приложений вы все равно можете сделать это вручную.