RAII なクラス
あると便利なこともあるので作ってみた。
public class Raii : IDisposable { Action action; public Raii(Action action) { this.action = action; } public void Dispose() { action(); } }
Form form; form.SuspendLayout(); using (Raii r = new Raii(() => { form.ResumeLayout(); }) { ... }
Graphics g; var old = g.InterpolationMode; using (Raii r = new Raii(() => { g.InterpolationMode = old; }) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; ... }
これぐらいなら .NET Framework の中にありそうな気もするけど……。
でもリソースじゃないので RAII と書くのはおかしい気がする。AdhocDisposable とか?