feat: 异步累加器函数 (#17)

This commit is contained in:
2024-03-01 11:24:47 +08:00
committed by GitHub
parent 00164b02d9
commit 3de9d3b8d0
7 changed files with 29 additions and 53 deletions

View File

@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="xunit" Version="2.6.3"/>
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.5">
<PackageReference Include="xunit" Version="2.7.0"/>
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<PackageReference Include="coverlet.collector" Version="6.0.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>

View File

@ -19,7 +19,7 @@ public sealed class ResourceDescriptionAttribute<T> : Attribute
/// <summary>
/// 资源名称
/// </summary>
public string ResourceName { get; set; }
public string ResourceName { get; }
/// <summary>
/// 资源对象

View File

@ -5,6 +5,26 @@ namespace NSExt.Extensions;
/// </summary>
public static class EnumerableExtensions
{
/// <summary>
/// 异步累加器函数
/// </summary>
/// <exception cref="InvalidOperationException">InvalidOperationException</exception>
public static async Task<TSource> AggregateAsync<TSource>( //
this IEnumerable<TSource> source, Func<TSource, TSource, Task<TSource>> func)
{
using var e = source.GetEnumerator();
if (!e.MoveNext()) {
throw new InvalidOperationException("Sequence contains no elements");
}
var result = e.Current;
while (e.MoveNext()) {
result = await func(result, e.Current).ConfigureAwait(false);
}
return result;
}
/// <summary>
/// 将列表转成分隔符分隔的字符串
/// </summary>

View File

@ -26,7 +26,7 @@ public static class StreamExtensions
public static bool IsTextStream(this Stream me)
{
#pragma warning disable IDE0300
return me.FirstByteIndex(new byte[] { 0x00, 0xff }) < 0;
return me.FirstByteIndex([0x00, 0xff]) < 0;
#pragma warning restore IDE0300
}
}