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