AutoReleaseObject.cs 483 B

123456789101112131415
  1. using System;
  2. namespace WpfTest1.ComAgent
  3. {
  4. public class AutoReleaseObject<T> where T : IDisposable
  5. {
  6. public T reference { get; set; }
  7. public AutoReleaseObject(T reference) => this.reference = reference;
  8. ~AutoReleaseObject() => reference.Dispose();
  9. public static implicit operator T(AutoReleaseObject<T> obj) => obj.reference;
  10. public static implicit operator AutoReleaseObject<T>(T obj) => new AutoReleaseObject<T>(obj);
  11. }
  12. }