在流畅的界面上强制执行某些规则

时间:2014-01-08 16:26:26

标签: c# fluent-interface

我创建了一个流畅的API,可以按预期工作。 现在我想强制执行一些规则,以确保所有内容都正确:

1:调用的第一个方法应该是BuildTestPlan,intellisense中不应列出其他任何内容(==>现在全部可用 - >已解决:请参阅更新)

2:只有BuildTestPlan AddTestSequence应该可用(==>这没关系)

3:只有AddTestSequence AddTest应该可用(==>这没关系)

4:AddTest之后应该有3个可用选项:AddTest (==>这没关系)AddTestSequence (= =>这里我被困了)GetResult (==>这没关系)

代码:

public class FluentTestPlanBuilderWithRules : ITestPlanBuilder, ITestSequenceBuilder, ITestBuilder
{
    public ITestSequenceBuilder BuildTestPlan()
    {
        // Do stuff
        return this;
    }

    public ITestBuilder AddTestSequence()
    {
        // Do stuff
        return this;
    }

    public ITestBuilder AddTest()
    {
        // Do stuff
        return this;
    }

    public TestPlan GetResult()
    {
        // Return built TestPlan
    }
}

public interface ITestPlanBuilder
{
    ITestSequenceBuilder BuildTestPlan();
}

public interface ITestSequenceBuilder
{
    ITestBuilder AddTestSequence();
}

public interface ITestBuilder
{
    ITestBuilder AddTest();
    TestPlan GetResult();
}

用法:

var builder = new EnforcedFluentTestPlanBuilder();
var o = builder.BuildTestPlan()
        .AddTestSequence()
        .AddTest()
        .AddTest()
        .AddTest()
        .AddTestSequence()
        .AddTest()
        .AddTest()
        .AddTestSequence()
        .AddTest()
        .GetResult();

我担心没有办法强制执行nr 1,因为它们都是公共方法。 但是AddTestSequence之后和AddTest之后是否可以BuildTestPlan

更新 找到nr 1 here

的解决方案

0 个答案:

没有答案