Unity использует конвейер сборки под названием StrategyChain
для создания объектов. Этот конвейер запускается каждый раз, когда вы разрешаете объект из контейнера.
Каждый шаг в этом конвейере реализован как стратегия. Эти стратегии поиска значений называются BuilderPolicies
. Эти политики инкапсулируют информацию, накопленную стратегией (например, используя отражение, чтобы определить, какой конструктор использовать, какие свойства вводить и т. Д.). При первом запуске конвейера для определенного типа стратегии помещают политики в хранилище с именем PolicyList
. В следующий раз, когда конвейеру будет предложено создать этот тип, эти значения будут использованы повторно, поэтому затрачиваемые на это усилия будут стоить вам только один раз.
UPDATE
Полагаю, вы имеете в виду ASP.NET? На самом деле есть два PolicyLists
. Тот, который живет только один цикл через StrategyChain
(переходный процесс), и тот, который связан со сроком службы контейнера. Он живет до тех пор, пока ваш экземпляр UnityContainer
не утилизируется или не собирается мусор. Одна вещь, которая может быть вам интересна: вы не можете сериализовать свой контейнер. Таким образом, вы не можете указать приложению, работающему в веб-ферме, хранить его в кэше и делить его между серверами.