浏览代码

Adding constructor overloads to CompositeAsyncDisposable.

Bart De Smet 8 年之前
父节点
当前提交
61250f2365

+ 22 - 1
AsyncRx.NET/System.Reactive.Async.Disposables/System/Reactive/Disposables/CompositeAsyncDisposable.cs

@@ -12,9 +12,30 @@ namespace System.Reactive.Disposables
     public sealed class CompositeAsyncDisposable : IAsyncDisposable
     {
         private readonly AsyncLock _gate = new AsyncLock();
-        private readonly List<IAsyncDisposable> _disposables = new List<IAsyncDisposable>();
+        private readonly List<IAsyncDisposable> _disposables;
         private bool _disposed;
 
+        public CompositeAsyncDisposable()
+        {
+            _disposables = new List<IAsyncDisposable>();
+        }
+
+        public CompositeAsyncDisposable(params IAsyncDisposable[] disposables)
+        {
+            if (disposables == null)
+                throw new ArgumentNullException(nameof(disposables));
+
+            _disposables = new List<IAsyncDisposable>(disposables);
+        }
+
+        public CompositeAsyncDisposable(IEnumerable<IAsyncDisposable> disposables)
+        {
+            if (disposables == null)
+                throw new ArgumentNullException(nameof(disposables));
+
+            _disposables = new List<IAsyncDisposable>(disposables);
+        }
+
         public async Task AddAsync(IAsyncDisposable disposable)
         {
             if (disposable == null)