using System; namespace SharpGLTF.Runtime { /// /// A wrapper that contains an object with disposable resources. /// /// public class MonoGameDeviceContent : IDisposable where T:class { #region lifecycle internal MonoGameDeviceContent(T instance, IDisposable[] disposables) { _Instance = instance; _Disposables = disposables; } public void Dispose() { _Instance = null; if (_Disposables == null) return; foreach (var d in _Disposables) d.Dispose(); _Disposables = null; } ~MonoGameDeviceContent() { System.Diagnostics.Debug.Assert(_Disposables == null, "Not disposed correctly"); } #endregion #region data /// /// The actual object. /// private T _Instance; /// /// The disposable resources associated with . /// private IDisposable[] _Disposables; #endregion #region properties public static implicit operator T(MonoGameDeviceContent value) { return value?.Instance; } public T Instance => _Instance; #endregion } }