From 6c554415146a49e1657c2d933c80f60b3012bc01 Mon Sep 17 00:00:00 2001 From: Simon G Date: Tue, 14 Dec 2021 16:31:04 +0100 Subject: [PATCH] #55: dispose disposable singletons and multitons when container is disposed --- LightweightIocContainer/IocContainer.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/LightweightIocContainer/IocContainer.cs b/LightweightIocContainer/IocContainer.cs index 5af49ed..7e5d434 100644 --- a/LightweightIocContainer/IocContainer.cs +++ b/LightweightIocContainer/IocContainer.cs @@ -785,6 +785,19 @@ namespace LightweightIocContainer public void Dispose() { Registrations.Clear(); + + foreach (var singleton in _singletons) + { + if (singleton.instance is IDisposable disposable) + disposable.Dispose(); + } + + foreach (var multitonInstance in _multitons.SelectMany(multiton => multiton.instances)) + { + if (multitonInstance.Value is IDisposable disposable) + disposable.Dispose(); + } + _singletons.Clear(); _multitons.Clear(); }