Greg young的Fluent Interface是如何工作的?

本文关键字:工作 何工作 young Fluent Interface Greg | 更新日期: 2023-09-27 18:10:36

我正在尝试遵循这篇文章:http://codebetter.com/gregyoung/2007/12/05/a-use-for-extension-methods/

我一直坚持到这里:

Now that I have these I can decorate the Builder with extension methods like:
public static CostBuilder Cost(this Builder s)
{
    return new CostBuilder();
}

我该把这段代码放在哪里?

编辑:Per vlad的回答

我把这段代码卡在Builder和Create类

的地方
public static partial class BuilderExtensions
{
}

然后,对于任何需要添加构建器的命名空间,我将其放在同一个类文件中的构建器类下面:

public static partial class BuilderExtensions
{
    public static CostBuilder Cost(this Builder s)
    {
        return new CostBuilder();
    }
}

Greg young的Fluent Interface是如何工作的?

根据MSDN, Extension methods可以定义在"非嵌套的,非泛型的静态类"中。

在本例中,可以将其添加到静态BuilderUtilities类中。

扩展方法必须放在静态类中。

public static class BuilderExtensions {
    public static CostBuilder Cost(this Builder s) {
        return new CostBuilder();
    }
}

您可以将BuilderExtensions声明中的public关键字更改为internal,以保持扩展方法对API的消费者不可见。