using System; namespace Wayne.Lib { /// <summary> /// A disposable where a behavior can be invoked when dispose occurs. /// The dispose action will only be invoked once regardless number of times /// the Dispose method is called. /// </summary> public class ActionDisposable : DisposableBase { private readonly Action action; /// <summary> /// Constructor. /// </summary> /// <param name="action">Action to be invoked first time the object is disposed.</param> public ActionDisposable(Action action) { this.action = action; } protected override void DoDispose() { action(); } } }