Greg Young的Fluent界面如何运作?

时间:2013-04-22 19:54:37

标签: c# design-patterns builder fluent-interface method-chaining

我正在尝试按照这篇文章: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();
}

我在哪里粘贴这段代码?

编辑:按照vlad的回答

我将此代码粘贴在Builder和Create类

的位置
public static partial class BuilderExtensions
{
}

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

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

2 个答案:

答案 0 :(得分:1)

根据MSDNExtension methods可以在“非嵌套的非泛型静态类中定义”。

在这种特殊情况下,您可以将其添加到静态BuilderUtilities类。

答案 1 :(得分:1)

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

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

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