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();
}
}
}