Roadmap › Design Patterns (GoF + Enterprise) in C# › Module: Creational Patterns
Lessons in this course (18)

4. Builder

Intermediate★ Must knowLesson 4 of 18

Construct a complex object step by step, separating construction from representation. Fluent builders are everywhere in .NET.

csharp
public class EmailBuilder
{
    private readonly MailMessage _m = new();
    public EmailBuilder From(string a) { _m.From = new MailAddress(a); return this; }
    public EmailBuilder To(string a) { _m.To.Add(a); return this; }
    public EmailBuilder Subject(string s) { _m.Subject = s; return this; }
    public EmailBuilder Html(string body) { _m.Body = body; _m.IsBodyHtml = true; return this; }
    public MailMessage Build() => _m.To.Count == 0 ? throw new InvalidOperationException("No recipient") : _m;
}

var mail = new EmailBuilder().From("hr@corp.test").To("divakar@corp.test").Subject("Offer").Html("<b>Welcome</b>").Build();

// .NET examples: WebApplication.CreateBuilder(), StringBuilder, UriBuilder, SqlConnectionStringBuilder, EF Core ModelBuilder