using System.Collections.Generic;
public static void Main()
var number = new NumberBuilder();
.WithTexts(new[] {"test", "test2"})
.WithTexts(new[] {"test3"})
public abstract class Builder<TBuilder> where TBuilder : Builder<TBuilder>
private List<string> texts = new();
public void AddString(string text) => texts.Add(text);
public string Build() => string.Join(" ", texts);
public TBuilder WithTexts(params string[] texts)
foreach (var text in texts) AddString(text);
public class NumberBuilder : Builder<NumberBuilder>
public NumberBuilder WithNumber(int number) => WithTexts(number.ToString());
public class StaticBuilder : Builder<StaticBuilder>
public StaticBuilder WithStatic() => WithTexts("test");