Цепочка методов условного построителя Fluent Interface

Мне было интересно, как лучше всего реализовать условие .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()

Update— пример решения может быть нашел здесь.

54
задан Keith Pinson 29 January 2013 в 09:31
поделиться