Перегрузки методов без дублирования кода в C#?
В случаях, когда код это позволяет, можно вынести основной функционал в один из методов (базовый для вас) и вызывать его из других перегрузок:string GenerateText(string text)
{
 return GenerateText(text, "Без заголовка");
}

string GenerateText(string title, string text)
{
 return title + Environment.NewLine + text;
}
Можно использовать необязательные аргументы, они как раз должны хорошо подойти в случае 1-3 различающихся параметров:string GenerateText(string title, string text = "Без заголовка")
{
 return title + Environment.NewLine + text;
 }
Никто не может запретить вам передавать вместо не используемых аргументов null и обрабатывать в коде:string GenerateText(string title, string text)
{
 return title + Environment.NewLine + (text ?? "Без заголовка");
}
А в случае неопределённого числа однотипных аргументов используем params:string GenerateText(string title, params string[] text)
{
 return title + Environment.NewLine + string.Join(Environment.NewLine, text);
}
Комбинируйте этот базовый набор и его должно быть вполне достаточно для аккуратного кода. И само собой, выделяйте повторяемый функционал в методы и классы для последующего повторного использования.
Пишу общий метод (возможно, со слегка другим набором параметров), который вызываю из каждой из перегрузок. Впрочем, чаще удаётся обойтись вызовом второго метода из первого.