RSCG – JKToolKit.TemplatePropertyGenerator
RSCG – JKToolKit.TemplatePropertyGenerator
name | JKToolKit.TemplatePropertyGenerator |
nuget | https://www.nuget.org/packages/JKToolKit.TemplatePropertyGenerator/ |
link | https://github.com/JKamsker/JKToolKit.TemplatePropertyGenerator |
author | Jonas Kamsker |
String templating for a class
This is how you can use JKToolKit.TemplatePropertyGenerator .
The code that you start with is
<project sdk="Microsoft.NET.Sdk"> <propertygroup> <outputtype>Exe</outputtype> <targetframework>net8.0</targetframework> <implicitusings>enable</implicitusings> <nullable>enable</nullable> </propertygroup> <itemgroup> <packagereference version="0.0.4" include="JKToolKit.TemplatePropertyGenerator"> </packagereference> <propertygroup> <emitcompilergeneratedfiles>true</emitcompilergeneratedfiles> <compilergeneratedfilesoutputpath>$(BaseIntermediateOutputPath)\GX</compilergeneratedfilesoutputpath> </propertygroup> </itemgroup>
The code that you will use is
using SimpleTemplate; Person person = new(); person.FirstName = "Andrei"; person.LastName = "Ignat"; Console.WriteLine(new Person.HelloClass().Format(person.FirstName,person.LastName));
namespace SimpleTemplate; [TemplateProperty("Hello", "Hello {name1}, {name2}!")] internal partial class Person { public string? FirstName { get; set; } public string? LastName { get; set; } }
The code that is generated is
global using JKToolKit.TemplatePropertyGenerator.Attributes; using System; namespace JKToolKit.TemplatePropertyGenerator.Attributes; [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)] internal class TemplatePropertyAttribute : Attribute { public string Name { get; } public string Format { get; } public TemplatePropertyAttribute(string name, string format) { Name = name; Format = format; } }
// <auto-generated> using System; namespace SimpleTemplate { internal partial class Person { public static readonly HelloClass Hello = new(); public class HelloClass { public string Template => "Hello {name1}, {name2}!"; internal HelloClass() { } public string Format(string name1, string name2) { return $"Hello {name1}, {name2}!"; } public FormattableString AsFormattable(string name1, string name2) { return $"Hello {name1}, {name2}!"; } } } }
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/JKToolKit.TemplatePropertyGenerator
Leave a Reply