Единство распоряжаться объектом - PullRequest
7 голосов
/ 18 сентября 2009

Есть ли способ заставить Unity утилизировать объекты с добавленными свойствами как часть Teardown?

На заднем плане я работаю над приложением, использующим ASP.NET MVC 2, Unity и WCF. Мы написали нашу собственную фабрику контроллеров MVC, которая использует единицу для создания экземпляра контроллера, а прокси WCF внедряются с помощью атрибута [Dependency] в открытых свойствах контроллера. В конце жизненного цикла страницы вызывается метод ReleaseController фабрики контроллеров, и мы вызываем IUnityContainer.Teardown (theMvcController). В этот момент контроллер расположен должным образом, но мне также нужно избавиться от введенных wcf-прокси. (На самом деле мне нужно вызвать Close и / или Abort для них, а не Dispose, но это более поздняя проблема.)

Конечно, я мог бы переопределить методы Dispose и очистить прокси контроллеров, но я не хочу, чтобы контроллеры знали о жизненном цикле внедряемых интерфейсов или даже о том, что они ссылаются на прокси WCF.

Если мне для этого нужно написать код самому, что будет лучшей точкой расширения? Буду признателен за любой указатель.

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Я создал единичное расширение, которое позаботится об удалении экземпляров, созданных контейнером в TearDown.

См. http://www.neovolve.com/2010/06/18/unity-extension-for-disposing-build-trees-on-teardown/

0 голосов
/ 17 ноября 2011

Возможный обходной путь заключается в том, что вы также можете написать обертку вокруг ваших прокси, которая при утилизации (вызывается Unity при удалении экземпляров) вызывает метод Close прокси. Это жизнеспособный сценарий для вас?

...