TestUse_Fails имеет смысл для меня, потому что вызов Use <> () по сути означает, что вы указываете экземпляр по умолчанию для типа (и добавляете его). Последний в общем выигрывает - я не могу найти явные документы по этому вопросу, но так работают большинство контейнеров. Вызов r1 получает TheSecondResource (последний установлен по умолчанию), а вызов r2 получает именованный ресурс.
TestUseOrderChanged работает, потому что по умолчанию после init / config используется TheFirstResource, но TheSecondResource все еще добавлен в контейнер с именем. Таким образом, r1 получает TheFirstResource (как он был последним и, следовательно, по умолчанию), а r2 правильно получает TheSecondResource в качестве именованного экземпляра.
TestInitializeAndConfigure_Fails является нечетным. Оттуда, где я сижу, r1 должен получить TheFirstResource, так как значение по умолчанию не было перезаписано - Use <> () больше не вызывалось. Вызов Configure после вызова Initialize должен , а не сбросить контейнер в соответствии с документами. Я бы попытался вызвать ObjectFactory.WhatDoIHave () и посмотреть, зарегистрирован ли TheFirstResource даже после вызовов Initialize () и Configure ().
Для меня это выглядит как ошибка, и я бы посоветовал отправить ее в группу пользователей Structuremap (http://groups.google.com/group/structuremap-users).