<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

StackOfDisposables

This class will dispose pushed IDisposable objects in LIFO manner.
using System; using System.Collections.Generic; namespace Relativity.DataExchange.Logging { internal class StackOfDisposables : IDisposable { private readonly Stack<IDisposable> disposables = new Stack<IDisposable>(); ~StackOfDisposables() { Dispose(false); } public void Push(IDisposable disposable) { disposables.Push(disposable); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (disposing) { while (disposables.Count > 0) { disposables.Pop()?.Dispose(); } } } } }