-
Notifications
You must be signed in to change notification settings - Fork 0
/
Disposable.cs
51 lines (42 loc) · 1.07 KB
/
Disposable.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Text;
namespace ItemLuck
{
public class Disposable : IDisposable
{
private readonly Action _dispose;
public static Disposable Empty { get; } = new Disposable(() => { });
public Disposable(Action dispose)
{
_dispose = dispose;
}
public void Dispose()
{
_dispose();
}
}
public class CompositeDisposable : IDisposable
{
private readonly List<IDisposable> _disposables;
public CompositeDisposable()
{
_disposables = new List<IDisposable>();
}
public void Add(IDisposable disposable)
{
_disposables.Add(disposable);
}
public void AddRange(IEnumerable<IDisposable> disposables)
{
_disposables.AddRange(disposables);
}
public void Dispose()
{
foreach (IDisposable disposable in _disposables)
{
disposable.Dispose();
}
}
}
}