Kaynağa Gözat

Refactor AsyncIterator to allow for reuse.

Bart De Smet 7 yıl önce
ebeveyn
işleme
c2a27a8604

+ 33 - 0
Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.Opt.cs

@@ -0,0 +1,33 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information. 
+
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Linq
+{
+    partial class AsyncIterator<TSource>
+    {
+        public virtual IAsyncEnumerable<TResult> Select<TResult>(Func<TSource, TResult> selector)
+        {
+            return new AsyncEnumerable.SelectEnumerableAsyncIterator<TSource, TResult>(this, selector);
+        }
+
+        public virtual IAsyncEnumerable<TResult> Select<TResult>(Func<TSource, Task<TResult>> selector)
+        {
+            return new AsyncEnumerable.SelectEnumerableAsyncIteratorWithTask<TSource, TResult>(this, selector);
+        }
+
+        public virtual IAsyncEnumerable<TSource> Where(Func<TSource, bool> predicate)
+        {
+            return new AsyncEnumerable.WhereEnumerableAsyncIterator<TSource>(this, predicate);
+        }
+
+        public virtual IAsyncEnumerable<TSource> Where(Func<TSource, Task<bool>> predicate)
+        {
+            return new AsyncEnumerable.WhereEnumerableAsyncIteratorWithTask<TSource>(this, predicate);
+        }
+    }
+}

+ 1 - 21
Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.cs

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
 
 namespace System.Linq
 {
-    internal abstract class AsyncIterator<TSource> : IAsyncEnumerable<TSource>, IAsyncEnumerator<TSource>
+    internal abstract partial class AsyncIterator<TSource> : IAsyncEnumerable<TSource>, IAsyncEnumerator<TSource>
     {
         private readonly int _threadId;
 
@@ -93,26 +93,6 @@ namespace System.Linq
 
         public abstract AsyncIterator<TSource> Clone();
 
-        public virtual IAsyncEnumerable<TResult> Select<TResult>(Func<TSource, TResult> selector)
-        {
-            return new AsyncEnumerable.SelectEnumerableAsyncIterator<TSource, TResult>(this, selector);
-        }
-
-        public virtual IAsyncEnumerable<TResult> Select<TResult>(Func<TSource, Task<TResult>> selector)
-        {
-            return new AsyncEnumerable.SelectEnumerableAsyncIteratorWithTask<TSource, TResult>(this, selector);
-        }
-
-        public virtual IAsyncEnumerable<TSource> Where(Func<TSource, bool> predicate)
-        {
-            return new AsyncEnumerable.WhereEnumerableAsyncIterator<TSource>(this, predicate);
-        }
-
-        public virtual IAsyncEnumerable<TSource> Where(Func<TSource, Task<bool>> predicate)
-        {
-            return new AsyncEnumerable.WhereEnumerableAsyncIteratorWithTask<TSource>(this, predicate);
-        }
-
         protected abstract ValueTask<bool> MoveNextCore(CancellationToken cancellationToken);
 
         protected virtual void OnGetEnumerator(CancellationToken cancellationToken)