using System; using System.Collections.Generic; using System.Linq; namespace Masuit.Tools.Systems; /// /// 值可被Dispose的字典类型 /// /// /// public class DisposableDictionary : NullableDictionary, IDisposable where TValue : IDisposable { private bool _isDisposed; /// /// 终结器 /// ~DisposableDictionary() { Dispose(false); } /// /// /// public void Dispose() { if (_isDisposed) { return; } Dispose(true); _isDisposed = true; GC.SuppressFinalize(this); } public DisposableDictionary() { } public DisposableDictionary(TValue fallbackValue) : base() { FallbackValue = fallbackValue; } public DisposableDictionary(int capacity) : base(capacity) { } public DisposableDictionary(IDictionary, TValue> dictionary) : base(dictionary) { } /// /// 释放 /// /// public void Dispose(bool disposing) { foreach (var s in Values.Where(v => v != null)) { s.Dispose(); } } }