Я вижу, что последнее изменение, внесенное в Виндзор, таково:
change - IReleasePolicy interface has a new method: IReleasePolicy CreateSubPolicy(); usage of
sub-policies changes how typed factories handle out-of-band-release of components (see
description)
impact - medium
fixability - easy
description - This was added as an attempt to enable more fine grained lifetime scoping (mostly
for per-typed-factory right now, but in the future also say - per-window in client app).
As a side-effect of that (and change to release policy behavior described above) it is no
longer possible to release objects resolved via typed factories, using container.Release.
As the objects are now tracked only in the scope of the factory they will be released only
if a call to factory releasing method is made, or when the factory itself is released.
fix - Method should return new object that exposes the same behavior as the 'parent' usually it
is just best to return object of the same type (as the built-in release policies do).
Я использую реализацию автоматического освобождения IDisposable, как описано здесь:
http://devlicio.us/blogs/krzysztof_kozmic/archive/2010/01/27/transparently-releasing-components-in-windsor.aspx
Поскольку kernel.ReleaseComponent больше не выпускает компоненты, следующее больше не работает должным образом:
using (var instance = container.Resolve<Func<IMyDisposable>>()())
{
...
} // my interceptor gets called here, but instance is not disposed because the Kernel's ReleasePolicy doesn't track it anymore.
Как обойти это, используя последнюю версию Windsor?
Спасибо.