Нужно ли распоряжаться StructureMap «за запрос» экземпляры? - PullRequest
1 голос
/ 28 сентября 2010

Я адаптирую код, изначально написанный для Windsor, для использования StructureMap. В примере с Виндзором мы отпускаем обработчик. Необходимо ли это делать с экземплярами StructureMap, которые кэшируются «на запрос»? Код:

        foreach (var handler in ObjectFactory.GetAllInstances<IHandle<TEvent>>()) {
            handler.Handle(@event);
            // do I need to dispose here?
        }
        // or should I do this: 
        ObjectFactory.EjectAllInstancesOf<IHandle<TEvent>>();

Спасибо Ben

1 Ответ

3 голосов
/ 28 сентября 2010

StructureMap вообще не поддерживает ссылки на экземпляры «предварительного запроса», поэтому вам не нужно предпринимать какие-либо шаги, чтобы сказать StructureMap об их освобождении.

Однако, если ожидаемые службы ожидают явногоутилизировать (потому что они реализуют IDisposable), вы по-прежнему несете ответственность за их удаление.StructureMap просто предоставляет вам экземпляр, и вы можете использовать его надлежащим образом.

С одним исключением - если вы извлекаете экземпляр IDisposable из вложенного контейнера, будет вызываться Dispose()в случае удаления вложенного контейнера.

...