Browse Source

在 Class<T> 中实现 IDisposable,支持释放 Value。

dev
王厅 2 months ago
parent
commit
6c08810f94
  1. 9
      Apewer/Class.cs
  2. 8
      Apewer/RuntimeUtility.cs

9
Apewer/Class.cs

@ -4,7 +4,7 @@ namespace Apewer
{ {
/// <summary>装箱类。</summary> /// <summary>装箱类。</summary>
public sealed class Class<T> // : IComparable, IComparable<T>, IComparable<Class<T>> public sealed class Class<T> : IDisposable // : IComparable, IComparable<T>, IComparable<Class<T>>
{ {
/// <summary>值。</summary> /// <summary>值。</summary>
@ -16,6 +16,13 @@ namespace Apewer
/// <summary>创建装箱实例,值为指定值。</summary> /// <summary>创建装箱实例,值为指定值。</summary>
public Class(T value) => Value = value; public Class(T value) => Value = value;
#region IDisposable
/// <summary>如果 <see cref="Value" /> 实现了 <see cref="IDisposable" />,则释放 <see cref="Value" /> 占用的系统资源。</summary>
public void Dispose() => RuntimeUtility.Dispose(Value);
#endregion
#region Override #region Override
/// <summary></summary> /// <summary></summary>

8
Apewer/RuntimeUtility.cs

@ -546,11 +546,11 @@ namespace Apewer
/// <summary>执行与释放或重置非托管资源关联的应用程序定义的任务。</summary> /// <summary>执行与释放或重置非托管资源关联的应用程序定义的任务。</summary>
/// <returns>可能出现的错误信息。</returns> /// <returns>可能出现的错误信息。</returns>
public static void Dispose(object @object, bool flush = false) public static void Dispose(object instance, bool flush = false)
{ {
if (@object == null) return; if (instance == null) return;
var stream = @object as Stream; var stream = instance as Stream;
if (stream != null) if (stream != null)
{ {
if (flush) if (flush)
@ -560,7 +560,7 @@ namespace Apewer
try { stream.Close(); } catch { } try { stream.Close(); } catch { }
} }
var disposable = @object as IDisposable; var disposable = instance as IDisposable;
if (disposable != null) if (disposable != null)
{ {
try try

Loading…
Cancel
Save