From 6efd22a3d22f8d87ad17da3a1e47ca26c5bb09f2 Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Tue, 26 Feb 2013 11:10:55 -0500 Subject: added a shutdown api method, font size fix and other decouplings --- .../BaseApplicationHost.cs | 43 ++++++++++------------ 1 file changed, 19 insertions(+), 24 deletions(-) (limited to 'MediaBrowser.Common.Implementations/BaseApplicationHost.cs') diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index c5af5059f..f5855bf75 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -151,21 +151,22 @@ namespace MediaBrowser.Common.Implementations /// /// /// The obj. - protected void RegisterSingleInstance(T obj) + /// if set to true [manage lifetime]. + protected void RegisterSingleInstance(T obj, bool manageLifetime = true) where T : class { Container.RegisterSingle(obj); - } - /// - /// Registers the specified func. - /// - /// - /// The func. - protected void Register(Func func) - where T : class - { - Container.Register(func); + if (manageLifetime) + { + var disposable = obj as IDisposable; + + if (disposable != null) + { + Logger.Info("Registering " + disposable.GetType().Name); + DisposableParts.Add(disposable); + } + } } /// @@ -205,16 +206,6 @@ namespace MediaBrowser.Common.Implementations return (T)result.GetInstance(); } - /// - /// Registers the specified service type. - /// - /// Type of the service. - /// Type of the concrete. - protected void Register(Type serviceType, Type implementation) - { - Container.Register(serviceType, implementation); - } - /// /// Loads the assembly. /// @@ -282,13 +273,17 @@ namespace MediaBrowser.Common.Implementations /// true to release both managed and unmanaged resources; false to release only unmanaged resources. protected virtual void Dispose(bool dispose) { - foreach (var part in DisposableParts) + var type = GetType(); + + Logger.Info("Disposing " + type.Name); + + foreach (var part in DisposableParts.Distinct().Where(i => i.GetType() != type).ToList()) { + Logger.Info("Disposing " + part.GetType().Name); + part.Dispose(); } - var b = Container.GetCurrentRegistrations(); - DisposableParts.Clear(); } } -- cgit v1.2.3