Просто быстрый вопрос, направленный @Chris Canal-
Я понимаю, что использование свободного интерфейса для создания ваших объектов делает его читабельным, но действительно ли это стоит дополнительных усилий, необходимых для написания этих "сборщиков", когда вы можете использовать синтаксис C # 3.0?
т.е. возьмите ваш пример:
var customer = new CustomerBuilder (). WithFirstName ("John"). WithLastName ("Doe"). Build ();
действительно ли это стоит усилий по созданию "компоновщика", когда вместо этого вы можете сделать это (что, возможно, столь же читабельно, и фактически меньше кода)?:
var customer = new Customer {FirstName = "John", LastName = "Doe"};