Реализация CA2000 очень чувствительна к случаям, когда исключение может быть выдано до того, как одноразовый экземпляр будет «передан» другому методу. В этом случае, даже если контейнер в конечном итоге позаботится об очистке менеджера времени жизни, если во время регистрации не возникнет никаких исключений, исключение может возникнуть либо до вызова RegisterInstance, либо внутри вызова, но до того, как контейнер добавит менеджер времени жизни к своему собственное внутреннее состояние.
Чтобы рассмотреть эту возможность, вы можете использовать код, подобный следующему (хотя я, вероятно, не стал бы беспокоиться об этом сам, если бы расположение не сделало что-то существенное):
var loggingServiceMock = new Mock<ILoggingService>();
var lifetimeManager = new ContainerControlledLifetimeManager();
try
{
this.unityContainer.RegisterInstance<ILoggingService>(loggingServiceMock.Object, lifetimeManager);
}
catch
{
lifetimeManager.Dispose();
throw;
}