RSCG – RossLean.StringificationGenerator
name | RossLean.StringificationGenerator |
nuget | https://www.nuget.org/packages/RossLean.StringificationGenerator/ |
link | https://github.com/RossLean/RossLean/ |
author | Alex Kalfakakos |
Generating constructor code as string
This is how you can use RossLean.StringificationGenerator .
The code that you start with is
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | < Project Sdk = "Microsoft.NET.Sdk" > < PropertyGroup > < OutputType >Exe</ OutputType > < TargetFramework >net8.0</ TargetFramework > < ImplicitUsings >enable</ ImplicitUsings > < Nullable >enable</ Nullable > </ PropertyGroup > < ItemGroup > < PackageReference Include = "RossLean.StringificationGenerator" Version = "1.0.1" > < PrivateAssets >all</ PrivateAssets > < IncludeAssets >runtime; build; native; contentfiles; analyzers; buildtransitive</ IncludeAssets > </ PackageReference > < PackageReference Include = "RossLean.StringificationGenerator.Core" Version = "1.0.0" /> </ ItemGroup > < PropertyGroup > < EmitCompilerGeneratedFiles >true</ EmitCompilerGeneratedFiles > < CompilerGeneratedFilesOutputPath >$(BaseIntermediateOutputPath)\GX</ CompilerGeneratedFilesOutputPath > </ PropertyGroup > </ Project > |
The code that you will use is
1 2 3 4 5 | using Code2String; using RossLean.StringificationGenerator.Generated; Person person = new Person( "Andrei" , "Ignat" ); string personString = ConstructionCodeGeneration.ForPerson(person); Console.WriteLine(personString); |
1 2 3 4 5 6 7 8 | using RossLean.StringificationGenerator.Core; namespace Code2String; [GenerateConstructionCode] public record Person( string firstName, string lastName) { } |
The code that is generated is
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | using Code2String; using RossLean.StringificationGenerator.Core; using System.Text; namespace RossLean.StringificationGenerator.Generated; public partial class ConstructionCodeGeneration : BaseConstructionCodeGeneration { public static string ForPerson(Person person) { return $$ "" " new Person({{StringLiteral(person.firstName)}}, {{StringLiteral(person.lastName)}}) "" "; } public static void AppendPerson(Person person, StringBuilder builder) { builder.Append($$ "" " new Person({{StringLiteral(person.firstName)}}, {{StringLiteral(person.lastName)}}) "" "); } public static string ForPersonTargetTyped(Person person) { return $$ "" " new ({{StringLiteral(person.firstName)}}, {{StringLiteral(person.lastName)}}) "" "; } public static void AppendPersonTargetTyped(Person person, StringBuilder builder) { builder.Append($$ "" " new ({{StringLiteral(person.firstName)}}, {{StringLiteral(person.lastName)}}) "" "); } } |
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/RossLean.StringificationGenerator
Leave a Reply