У меня та же проблема ... я использую контейнер структурной карты внутри фабрики и не могу заставить работать сингелтон.!
For<IServiceD>().Singleton().Use<ServiceD>();
Кажется, он работает только для временно созданных объектов, но не для явно созданных объектов.
(используя поиск в Google "временно, структура карты", вы должны найти что-то по этому поводу.)
То же самое относится к подконтейнерам:
private IContainer myParentContainer;
private IContainer myIoc;
...
myIoc = myParentContainer.GetNestedContainer();
и извлечение экземпляров из myIoc являются уникальными, но только до тех пор, пока они создаются временно ..
Меня просто смущает необходимость различать временно созданные объекты и другие объекты и кодировать их. Через десять лет никто больше не поймет этой разницы. Это должно быть проще, чем это.