Мне было интересно, что было бы лучшим способом реализовать условие .When в свободном интерфейсе, используя цепочку методов в объекте Builder?
Например, как бы реализовать методы .WithSkill() и .When() в следующем примере:
var level = 5;
var ninja = NinjaBuilder
.CreateNinja()
.Named("Ninja Boy")
.AtLevel(level)
.WithShurikens(10)
.WithSkill(Skill.HideInShadows)
.When(level > 3)
.Build()
Обновить. Примерное решение можно найти здесь.