RSCG – SyncMethodGenerator
| name | SyncMethodGenerator |
| nuget | https://www.nuget.org/packages/Zomp.SyncMethodGenerator/ |
| link | https://github.com/zompinc/sync-method-generator |
| author | Zomp Inc. |
Generating Sync method from async
This is how you can use SyncMethodGenerator .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Zomp.SyncMethodGenerator" Version="1.0.14" />
</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>
The code that you will use is
// See https://aka.ms/new-console-template for more information using Zomp.SyncMethodGeneratorDemo; Console.WriteLine("Hello,World!"); Writer.Haha("a.txt","Andrei Ignat"); Writer.Write("a.txt","andrei ignat");
namespace Zomp.SyncMethodGeneratorDemo;
partial class Writer
{
[Zomp.SyncMethodGenerator.CreateSyncVersion]
public static async Task WriteAsync(string file,string contents,
CancellationToken ct)
{
await File.WriteAllTextAsync(file,contents,ct).ConfigureAwait(true);
}
[Zomp.SyncMethodGenerator.CreateSyncVersion]
public static async Task HahaAsync(ReadOnlyMemory<byte> buffer,Stream stream,
CancellationToken ct)
=> await stream.WriteAsync(buffer,ct).ConfigureAwait(true);
}
The code that is generated is
// <auto-generated/>
namespace Zomp.SyncMethodGenerator
{
/// <summary>
/// An attribute that can be used to automatically generate a synchronous version of an async method. Must be used in a partial class.
/// </summary>
[System.AttributeUsage(System.AttributeTargets.Method)]
internal class CreateSyncVersionAttribute : System.Attribute
{
}
}
// <auto-generated/>
#nullable enable
namespace Zomp.SyncMethodGeneratorDemo;
partial class Writer
{
public static void Haha(global::System.ReadOnlySpan<byte> buffer,global::System.IO.Stream stream)
=> stream.Write(buffer);
}
// <auto-generated/>
#nullable enable
namespace Zomp.SyncMethodGeneratorDemo;
partial class Writer
{
public static void Write(string file,string contents)
{
global::System.IO.File.WriteAllText(file,contents);
}
}
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/SyncMethodGenerator
Leave a Reply