如何保证Fluent API中方法的顺序?

Afr*_*Ali 3 c# fluent-interface fluent

我想为我作为框架的一部分构建的一些类创建流畅的界面。我已经创建了这些方法,并且能够成功链接方法。现在我想确保我可以处理不正确的方法调用顺序。

我正在做的事情类似于 CreateWorkflow -> OpenConfiguration -> ChangeUserName 在上面的场景中,如果首先调用 ChangeUserName 就没有意义,因为它依赖于 OpenConfiguration。

我很困惑我为这种情况创建流畅的方法链是否正确以及如何使该序列起作用。对我来说,这个场景似乎非常适合创建流畅的 API。

Ven*_*ndi 7

以下是按特定顺序强制执行方法链的示例代码。我使用了这里的示例并修复了原始代码中的一个小问题。是 dotnet fiddler 中的运行代码

public interface IName
{
    IAge WithName(string name);
}

public interface IAge
{
    IPersist WithAge(int age);
}

public interface IPersist
{
    void Save();
}

public class Person : IName, IAge, IPersist
{
    public string Name { get; private set; }
    public int Age { get; private set; }


    public IAge WithName(string name)
    {
        Name = name;
        return this;
    }

    public IPersist WithAge(int age)
    {
        Age = age;
        return this;
    }

    public void Save()
    {
        // save changes here
    }
}
Run Code Online (Sandbox Code Playgroud)