Правила StructureMap для разных пространств имен - PullRequest
0 голосов
/ 11 ноября 2011

Мой сценарий:

Две разные части (области ASP.NET MVC) моего проекта нуждаются в том же инжекторе конструктора, что и Singleton, но разные экземпляры настраиваются немного по-разному.

Например

Область сайта = собственный синглтон

Администраторская область = собственный синглтон

Может ли это быть достигнуто с помощью StructureMap?Части проекта находятся в разных пространствах имен.

1 Ответ

0 голосов
/ 19 ноября 2011

Вы можете сделать это, если вы создадите один синглтон по умолчанию и один как именованный экземпляр.И в тех местах, где вам нужен именованный экземпляр, вы сопоставляете свои зависимости, чтобы использовать именованный экземпляр вместо значения по умолчанию.

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");
...