Files
WpfExtended/WpfExtended.SourceGeneration/Templates/GetterTemplate.cs
T
Alexandru Macocian 7d3c2fbb9b Alpha implementation of dependency property source generator.
Testing project for source generator
2021-04-06 10:40:06 +02:00

49 lines
1.3 KiB
C#

using System.Collections.Generic;
namespace System.Extensions.Templates
{
internal sealed class GetterTemplate : AbstractTemplate
{
public List<Modifier> Modifiers { get; } = new List<Modifier>();
public CodeTemplate Code { get; set; }
public GetterTemplate WithModifiers(params Modifier[] modifiers)
{
this.Modifiers.Clear();
this.Modifiers.AddRange(modifiers);
return this;
}
public GetterTemplate WithCode(CodeTemplate codeTemplate)
{
this.Code = codeTemplate;
return this;
}
public override void Generate(CodeWriter codeWriter)
{
foreach(var modifier in this.Modifiers)
{
codeWriter
.Append(modifier)
.Append(' ');
}
codeWriter.Append("get");
if (this.Code is SimpleCodeTemplate simpleGetter)
{
codeWriter
.Append(simpleGetter)
.AppendLine();
}
else
{
codeWriter
.BeginCodeBlock()
.Append(this.Code)
.EndCodeBlock();
}
}
}
}