Is there a reason that DefaultSentenceBuilder is marked private? It would be much easier to customize SentenceBuilder if the class were public and could be inherited.
public class MySentenceBuilder: DefaultSentenceBuilder
{
public override Func<string> UsageHeadingText => () => "Usage:";
}
SentenceBuilder.Factory = () => new MySentenceBuilder();
Another possibility would be to make SentenceBuilder non-abstract, move the default implementations there from DefaultSentenceBuilder, and then get rid of DefaultSentenceBuilder altogether.
Is there a reason that
DefaultSentenceBuilderis markedprivate? It would be much easier to customizeSentenceBuilderif the class were public and could be inherited.Another possibility would be to make
SentenceBuildernon-abstract, move the default implementations there fromDefaultSentenceBuilder, and then get rid ofDefaultSentenceBuilderaltogether.