1
0
Bart De Smet 8 жил өмнө
parent
commit
4f3a90ada1

+ 374 - 0
Ix.NET/Source/System.Interactive.Async/Average.Generated.cs

@@ -0,0 +1,374 @@
+// 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
+{
+    public static partial class AsyncEnumerable
+    {
+        public static Task<double> Average(this IAsyncEnumerable<int> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double> Average(this IAsyncEnumerable<int> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<double> Average(this IAsyncEnumerable<long> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double> Average(this IAsyncEnumerable<long> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<float> Average(this IAsyncEnumerable<float> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<float> Average(this IAsyncEnumerable<float> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<float> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<float> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<double> Average(this IAsyncEnumerable<double> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double> Average(this IAsyncEnumerable<double> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<decimal> Average(this IAsyncEnumerable<decimal> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<decimal> Average(this IAsyncEnumerable<decimal> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<decimal> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<decimal> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<int?> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<int?> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int?> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int?> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<long?> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<long?> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long?> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long?> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<float?> Average(this IAsyncEnumerable<float?> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<float?> Average(this IAsyncEnumerable<float?> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<float?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float?> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<float?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float?> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<double?> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<double?> Average(this IAsyncEnumerable<double?> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double?> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double?> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+        public static Task<decimal?> Average(this IAsyncEnumerable<decimal?> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<decimal?> Average(this IAsyncEnumerable<decimal?> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<decimal?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal?> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<decimal?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal?> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+    }
+}

+ 78 - 0
Ix.NET/Source/System.Interactive.Async/Average.Generated.tt

@@ -0,0 +1,78 @@
+<#@ template debug="false" hostspecific="false" language="C#" #>
+<#@ assembly name="System.Core" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ output extension=".cs" #>
+// 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
+{
+    public static partial class AsyncEnumerable
+    {
+<#
+var os = new[]
+{
+    new { type = "int", res = "double" },
+    new { type = "long", res = "double" },
+    new { type = "float", res = "float" },
+    new { type = "double", res = "double" },
+    new { type = "decimal", res = "decimal" },
+    new { type = "int?", res = "double?" },
+    new { type = "long?", res = "double?" },
+    new { type = "float?", res = "float?" },
+    new { type = "double?", res = "double?" },
+    new { type = "decimal?", res = "decimal?" },
+};
+
+foreach (var o in os)
+{
+    var n = o.type.EndsWith("?") ? ".GetValueOrDefault()" : "";
+#>
+        public static Task<<#=o.res#>> Average(this IAsyncEnumerable<<#=o.type#>> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, CancellationToken.None);
+        }
+
+        public static Task<<#=o.res#>> Average(this IAsyncEnumerable<<#=o.type#>> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return Average_(source, cancellationToken);
+        }
+
+        public static Task<<#=o.res#>> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, <#=o.type#>> selector)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(CancellationToken.None);
+        }
+
+        public static Task<<#=o.res#>> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, <#=o.type#>> selector, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+            if (selector == null)
+                throw new ArgumentNullException(nameof(selector));
+
+            return source.Select(selector).Average(cancellationToken);
+        }
+
+<#
+}
+#>
+    }
+}

+ 0 - 369
Ix.NET/Source/System.Interactive.Async/Average.cs

@@ -12,375 +12,6 @@ namespace System.Linq
 {
     public static partial class AsyncEnumerable
     {
-        public static Task<double> Average(this IAsyncEnumerable<int> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<int?> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double> Average(this IAsyncEnumerable<long> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<long?> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double> Average(this IAsyncEnumerable<double> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<double?> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<float> Average(this IAsyncEnumerable<float> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<float?> Average(this IAsyncEnumerable<float?> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<decimal> Average(this IAsyncEnumerable<decimal> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<decimal?> Average(this IAsyncEnumerable<decimal?> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average(source, CancellationToken.None);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int?> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long?> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double?> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<float> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<float?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float?> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<decimal> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-        public static Task<decimal?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal?> selector)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return Average(source, selector, CancellationToken.None);
-        }
-
-
-        public static Task<double> Average(this IAsyncEnumerable<int> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<int?> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double> Average(this IAsyncEnumerable<long> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<long?> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double> Average(this IAsyncEnumerable<double> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double?> Average(this IAsyncEnumerable<double?> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<float> Average(this IAsyncEnumerable<float> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<float?> Average(this IAsyncEnumerable<float?> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<decimal> Average(this IAsyncEnumerable<decimal> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<decimal?> Average(this IAsyncEnumerable<decimal?> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return Average_(source, cancellationToken);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int?> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long?> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double?> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<float> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<float?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float?> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<decimal> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
-        public static Task<decimal?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal?> selector, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-            if (selector == null)
-                throw new ArgumentNullException(nameof(selector));
-
-            return source.Select(selector)
-                         .Average(cancellationToken);
-        }
-
         private static async Task<double> Average_(this IAsyncEnumerable<int> source, CancellationToken cancellationToken)
         {
             var e = source.GetAsyncEnumerator();

+ 14 - 0
Ix.NET/Source/System.Interactive.Async/System.Interactive.Async.csproj

@@ -12,6 +12,11 @@
   </ItemGroup>
 
   <ItemGroup>
+    <None Include="Average.Generated.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Average.Generated.tt</DependentUpon>
+    </None>
     <None Include="MinMax.Generated.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>
@@ -25,6 +30,10 @@
   </ItemGroup>
 
   <ItemGroup>
+    <None Update="Average.Generated.tt">
+      <Generator>TextTemplatingFileGenerator</Generator>
+      <LastGenOutput>Average.Generated.cs</LastGenOutput>
+    </None>
     <None Update="MinMax.Generated.tt">
       <Generator>TextTemplatingFileGenerator</Generator>
       <LastGenOutput>MinMax.Generated.cs</LastGenOutput>
@@ -40,6 +49,11 @@
   </ItemGroup>
 
   <ItemGroup>
+    <Compile Update="Average.Generated.cs">
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Average.Generated.tt</DependentUpon>
+    </Compile>
     <Compile Update="MinMax.Generated.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>