2014-09-23 5 views
0

В более крупном проекте мы используем структурную карту с несколькими реестрами - каждая в другой библиотеке (все они сканируются с помощью метода LookForRegistries()).StructureMap - Application wide singleton (с использованием реестров)

Некоторые из этих регистров используется специальный класс, который должен быть создан в качестве одноэлементных:

public class Registry1 : Registry 
{ 
    public Registry1() 
    { 
     this.For<ISpecialThing>().Use<SpecialThing>().Singleton(); 
    } 
} 

public class Registry2 : Registry 
{ 
    public Registry2() 
    { 
     this.For<ISpecialThing>().Use<SpecialThing>().Singleton(); 
    } 
} 

В приведенном выше примере, SpecialThing класс инстанцированный дважды.

Есть ли способ рассказать структуру карты в реестрах, чтобы создать экземпляр только один раз в нашем Процессе?

ответ

1

Структура Карта ведет себя как ожидалось.

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

Кроме того, я обеспечиваю мое тестовое решение, если у кого есть подобные проблемы:

http://www.filehosting.org/file/details/458761/StructureMapTest.zip

Смежные вопросы