C# 格雷格·杨(Greg Young';什么是流畅的界面工作?

C# 格雷格·杨(Greg Young';什么是流畅的界面工作?,c#,design-patterns,builder,fluent-interface,method-chaining,C#,Design Patterns,Builder,Fluent Interface,Method Chaining,我试着跟随这篇文章: 我很好地遵循这一点: 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的回答 我将此代码粘贴在生成器和Create类所在的位置 public static part

我试着跟随这篇文章:

我很好地遵循这一点:

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的回答

我将此代码粘贴在生成器和Create类所在的位置

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

public static partial class BuilderExtensions
{
    public static CostBuilder Cost(this Builder s)
    {
        return new CostBuilder();
    }
}
根据,
扩展方法
可以“在非嵌套、非泛型静态类中”定义


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

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

public static class BuilderExtensions {
    public static CostBuilder Cost(this Builder s) {
        return new CostBuilder();
    }
}
您可以将
BuilderExtensions
声明中的
public
关键字更改为
internal
,以使扩展方法对API的使用者不可见