diff --git a/src/Umbraco.Core/DisposableObject.cs b/src/Umbraco.Core/DisposableObject.cs
index 516a9712e5..71477996ef 100644
--- a/src/Umbraco.Core/DisposableObject.cs
+++ b/src/Umbraco.Core/DisposableObject.cs
@@ -2,60 +2,60 @@ using System;
using System.Threading;
namespace Umbraco.Core
-{
- ///
- /// Abstract implementation of IDisposable.
- ///
- ///
- /// Can also be used as a pattern for when inheriting is not possible.
- ///
+{
+ ///
+ /// Abstract implementation of IDisposable.
+ ///
+ ///
+ /// Can also be used as a pattern for when inheriting is not possible.
+ ///
/// See also: https://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=vs.110%29.aspx
/// See also: https://lostechies.com/chrispatterson/2012/11/29/idisposable-done-right/
///
/// Note: if an object's ctor throws, it will never be disposed, and so if that ctor
/// has allocated disposable objects, it should take care of disposing them.
- ///
- public abstract class DisposableObject : IDisposable
- {
- private bool _disposed;
- private readonly object _locko = new object();
-
- // gets a value indicating whether this instance is disposed.
- // for internal tests only (not thread safe)
- //TODO make this internal + rename "Disposed" when we can break compatibility
- public bool IsDisposed { get { return _disposed; } }
-
- // implements IDisposable
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- // finalizer
- ~DisposableObject()
- {
- Dispose(false);
- }
+ ///
+ public abstract class DisposableObject : IDisposable
+ {
+ private bool _disposed;
+ private readonly object _locko = new object();
+
+ // gets a value indicating whether this instance is disposed.
+ // for internal tests only (not thread safe)
+ //TODO make this internal + rename "Disposed" when we can break compatibility
+ public bool IsDisposed { get { return _disposed; } }
+
+ // implements IDisposable
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ // finalizer
+ ~DisposableObject()
+ {
+ Dispose(false);
+ }
//TODO make this private, non-virtual when we can break compatibility
- protected virtual void Dispose(bool disposing)
- {
- lock (_locko)
- {
- if (_disposed) return;
- _disposed = true;
- }
+ protected virtual void Dispose(bool disposing)
+ {
+ lock (_locko)
+ {
+ if (_disposed) return;
+ _disposed = true;
+ }
DisposeUnmanagedResources();
if (disposing)
- DisposeResources();
- }
-
- protected abstract void DisposeResources();
-
- protected virtual void DisposeUnmanagedResources()
- { }
- }
+ DisposeResources();
+ }
+
+ protected abstract void DisposeResources();
+
+ protected virtual void DisposeUnmanagedResources()
+ { }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/DisposableObjectSlim.cs b/src/Umbraco.Core/DisposableObjectSlim.cs
new file mode 100644
index 0000000000..bcec6165db
--- /dev/null
+++ b/src/Umbraco.Core/DisposableObjectSlim.cs
@@ -0,0 +1,42 @@
+using System;
+
+namespace Umbraco.Core
+{
+ public abstract class DisposableObjectSlim : IDisposable
+ {
+ private bool _disposed;
+ private readonly object _locko = new object();
+
+ // gets a value indicating whether this instance is disposed.
+ // for internal tests only (not thread safe)
+ //TODO make this internal + rename "Disposed" when we can break compatibility
+ public bool IsDisposed { get { return _disposed; } }
+
+ // implements IDisposable
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ //TODO make this private, non-virtual when we can break compatibility
+ protected virtual void Dispose(bool disposing)
+ {
+ lock (_locko)
+ {
+ if (_disposed) return;
+ _disposed = true;
+ }
+
+ DisposeUnmanagedResources();
+
+ if (disposing)
+ DisposeResources();
+ }
+
+ protected abstract void DisposeResources();
+
+ protected virtual void DisposeUnmanagedResources()
+ { }
+ }
+}