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