Вы можете сделать это, если вы создадите один синглтон по умолчанию и один как именованный экземпляр.И в тех местах, где вам нужен именованный экземпляр, вы сопоставляете свои зависимости, чтобы использовать именованный экземпляр вместо значения по умолчанию.
Container container = new Container(x => {
x.For<ISomeDependency>().Singleton().Use<SomeDependency>(); // User
x.For<ISomeDependency>().Singleton().Add<SomeDependency>().Named("admin");
});
В приведенном выше примере «Use <>» помечает значение по умолчанию, а «Add <> "добавляет именованный экземпляр.
Это даст вам значение по умолчанию:
container.GetInstance<ISomeDependency>();
В то время как этот получит ваш именованный экземпляр:
container.GetInstance<ISomeDependency>("admin");