Files
Umbraco-CMS/src/Umbraco.Core/DisposableObjectSlim.cs
Mole bf41c2eeaa Netcore: Align namespaces (#9801)
* Rename Umbraco.Core namespace to Umbraco.Cms.Core

* Move extension methods in core project to Umbraco.Extensions

* Move extension methods in core project to Umbraco.Extensions

* Rename Umbraco.Examine namespace to Umbraco.Cms.Examine

* Move examine extensions to Umbraco.Extensions namespace

* Reflect changed namespaces in Builder and fix unit tests

* Adjust namespace in Umbraco.ModelsBuilder.Embedded

* Adjust namespace in Umbraco.Persistence.SqlCe

* Adjust namespace in Umbraco.PublishedCache.NuCache

* Align namespaces in Umbraco.Web.BackOffice

* Align namespaces in Umbraco.Web.Common

* Ensure that SqlCeSupport is still enabled after changing the namespace

* Align namespaces in Umbraco.Web.Website

* Align namespaces in Umbraco.Web.UI.NetCore

* Align namespaces in Umbraco.Tests.Common

* Align namespaces in Umbraco.Tests.UnitTests

* Align namespaces in Umbraco.Tests.Integration

* Fix errors caused by changed namespaces

* Fix integration tests

* Undo the Umbraco.Examine.Lucene namespace change

This breaks integration tests on linux, since the namespace wont exists there because it's only used on windows.

* Fix merge

* Fix Merge
2021-02-18 11:06:02 +01:00

57 lines
1.9 KiB
C#

using System;
namespace Umbraco.Cms.Core
{
/// <summary>
/// Abstract implementation of managed IDisposable.
/// </summary>
/// <remarks>
/// This is for objects that do NOT have unmanaged resources.
///
/// 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.
/// </remarks>
public abstract class DisposableObjectSlim : IDisposable
{
/// <summary>
/// Gets a value indicating whether this instance is disposed.
/// </summary>
/// <remarks>
/// for internal tests only (not thread safe)
/// </remarks>
public bool Disposed { get; private set; }
/// <summary>
/// Disposes managed resources
/// </summary>
protected abstract void DisposeResources();
/// <summary>
/// Disposes managed resources
/// </summary>
/// <param name="disposing">True if disposing via Dispose method and not a finalizer. Always true for this class.</param>
protected virtual void Dispose(bool disposing)
{
if (!Disposed)
{
if (disposing)
{
DisposeResources();
}
Disposed = true;
}
}
/// <inheritdoc/>
#pragma warning disable CA1063 // Implement IDisposable Correctly
public void Dispose() => Dispose(disposing: true); // We do not use GC.SuppressFinalize because this has no finalizer
#pragma warning restore CA1063 // Implement IDisposable Correctly
}
}