Благодаря Николь я нашел причину ... спасибо.
Но как утилизировать контейнер в этом случае? В случае вызова 'Dispose' для экземпляра UnityManager base.Dispose (true) вызовет Dispose снова .... и снова (рекурсия начнется).
Чтобы обойти это, я добавил дополнительную приватную переменную bool _bDisposed:
protected override void Dispose(bool disposing)
{
if (_bDisposed)
return;
if ( disposing )
{
_context.Dispose();
}
_bDisposed = true;
base.Dispose(disposing);
}
private bool _bDisposed;
Это реализация шаблона "Dispose", предложенная Биллом Вагнером в "Effective C #" (если я не ошиблась)