Skip to content

Instantly share code, notes, and snippets.

@thunklife
Created December 27, 2011 17:30
Show Gist options
  • Select an option

  • Save thunklife/1524476 to your computer and use it in GitHub Desktop.

Select an option

Save thunklife/1524476 to your computer and use it in GitHub Desktop.
Simple DSL for building up a Person
public static class PersonFactory
{
public static FirstNameExpression CreatePerson()
{
return new FirstNameExpression(new Person());
}
}
public class FirstNameExpression
{
private Person _person;
public FirstNameExpression(Person person)
{
_person = person;
}
public MiddleNameExpression WithFirstName(string first)
{
_person.FirstName = first;
return new MiddleNameExpression(_person);
}
}
public class MiddleNameExpression
{
private Person _person;
public MiddleNameExpression(Person person)
{
_person = person;
}
public LastNameExpression WithMiddleName(string middle)
{
_person.MiddleName = middle;
return new LastNameExpression(_person);
}
}
public class LastNameExpression
{
private Person _person;
public LastNameExpression(Person person)
{
_person = person;
}
public Person WithLastName(string last)
{
_person.LastName = last;
return _person;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment