Zomp.SyncMethodGenerator
1.0.1
See the version list below for details.
dotnet add package Zomp.SyncMethodGenerator --version 1.0.1
NuGet\Install-Package Zomp.SyncMethodGenerator -Version 1.0.1
<PackageReference Include="Zomp.SyncMethodGenerator" Version="1.0.1" />
paket add Zomp.SyncMethodGenerator --version 1.0.1
#r "nuget: Zomp.SyncMethodGenerator, 1.0.1"
// Install Zomp.SyncMethodGenerator as a Cake Addin
#addin nuget:?package=Zomp.SyncMethodGenerator&version=1.0.1
// Install Zomp.SyncMethodGenerator as a Cake Tool
#tool nuget:?package=Zomp.SyncMethodGenerator&version=1.0.1
Sync Method Generator
This .NET source generator produces a sync method from an async one.
Use cases
- A library which exposes both sync and async version of a method
- An application has to process two kinds of data in the same way:
- Large data from I/O which cannot be stored in memory before processing: Original async method
- Small sample of data in memory, usually a sample of the larger data: Generated sync method
How it works
Add CreateSyncVersionAttribute
to your async method in your partial
class
[Zomp.SyncMethodGenerator.CreateSyncVersion]
static async Task WriteAsync(ReadOnlyMemory<byte> buffer, Stream stream,
CancellationToken ct)
=> await stream.WriteAsync(buffer, ct).ConfigureAwait(true);
And it will generate a sync version of the method:
static void Write(ReadOnlySpan<byte> buffer, Stream stream)
=> stream.Write(buffer);
A list of changes applied to the new synchronized method:
Remove async modifier
Remove await from methods as well as
foreach
statementChange types
From To Task or ValueTask void Task<T> or ValueTask<T> T IAsyncEnumerable<T> IEnumerable<T> IAsyncEnumerator<T> IEnumerator<T> Memory<T> Span<T> ReadOnlyMemory<T> ReadOnlySpan<T> Remove parameters
Invocation changes
- Remove ConfigureAwait
- Remove WithCancellation
- Remove
Async
suffix from method calls (e.g. MoveNextAsync becomes MoveNext) - Remove CancellationToken parameter
- Remove IProgress<T>.Report(T) call
- Remove Memory<T>.Span property
Remove
CreateSyncVersionAttribute
Update XML documentation
Installation
To add the library use:
dotnet add package Zomp.SyncMethodGenerator
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Zomp.SyncMethodGenerator:
Repository | Stars |
---|---|
Zeugma440/atldotnet
Fully managed, portable and easy-to-use C# library to read and edit audio data and metadata (tags) from various audio formats, playlists and CUE sheets
|
Version | Downloads | Last updated |
---|---|---|
1.3.44 | 75 | 5/14/2024 |
1.3.43 | 136 | 4/26/2024 |
1.3.40 | 238 | 4/11/2024 |
1.3.39 | 193 | 4/9/2024 |
1.3.38 | 265 | 3/23/2024 |
1.3.36 | 153 | 3/20/2024 |
1.3.35 | 62 | 3/19/2024 |
1.3.33 | 115 | 3/18/2024 |
1.3.28 | 116 | 3/18/2024 |
1.3.27 | 135 | 3/17/2024 |
1.3.24 | 268 | 3/12/2024 |
1.3.23 | 170 | 3/12/2024 |
1.3.21 | 141 | 3/11/2024 |
1.3.20 | 166 | 3/11/2024 |
1.3.18 | 134 | 3/10/2024 |
1.3.17 | 222 | 2/26/2024 |
1.3.16 | 245 | 2/26/2024 |
1.3.13 | 163 | 2/25/2024 |
1.3.8-beta | 142 | 2/12/2024 |
1.3.6 | 238 | 1/26/2024 |
1.3.5 | 149 | 1/21/2024 |
1.3.1 | 227 | 1/17/2024 |
1.2.24 | 159 | 1/14/2024 |
1.2.18 | 130 | 1/5/2024 |
1.2.16 | 168 | 1/5/2024 |
1.2.13 | 134 | 1/4/2024 |
1.2.12 | 131 | 1/4/2024 |
1.2.8 | 121 | 1/3/2024 |
1.2.3 | 366 | 11/20/2023 |
1.2.1 | 146 | 11/13/2023 |
1.1.2 | 712 | 8/8/2023 |
1.0.14 | 225 | 8/4/2023 |
1.0.12 | 25,964 | 8/3/2023 |
1.0.11 | 207 | 8/2/2023 |
1.0.5 | 127 | 7/31/2023 |
1.0.3 | 120 | 7/29/2023 |
1.0.2 | 138 | 7/29/2023 |
1.0.1 | 183 | 7/27/2023 |
0.1.39-alpha | 464 | 1/25/2023 |
0.1.38-alpha | 199 | 1/19/2023 |
0.1.37-alpha | 187 | 1/19/2023 |
0.1.34-alpha | 179 | 1/18/2023 |
0.1.33-alpha | 163 | 1/15/2023 |
0.1.30-alpha | 221 | 11/21/2022 |
0.1.22-alpha | 183 | 11/19/2022 |
0.1.21-alpha | 176 | 11/19/2022 |
0.1.19-alpha | 153 | 11/19/2022 |
0.1.18-alpha | 191 | 11/18/2022 |
0.1.17-alpha | 258 | 11/14/2022 |
0.1.13-alpha | 158 | 11/13/2022 |
0.1.12-alpha | 205 | 10/31/2022 |
0.1.10-alpha | 160 | 10/28/2022 |
0.1.9-alpha | 202 | 10/27/2022 |
0.1.8-alpha | 226 | 10/27/2022 |
0.1.5-alpha | 182 | 10/27/2022 |
0.1.4-alpha | 208 | 10/27/2022 |
0.1.3-alpha | 225 | 10/26/2022 |
0.1.2-alpha | 224 | 10/25/2022 |
0.1.1-alpha | 244 | 10/25/2022 |