C# 为什么有些人会说;“建筑商模式”;对Fluent接口使用扩展方法比使用扩展方法更好吗?

C# 为什么有些人会说;“建筑商模式”;对Fluent接口使用扩展方法比使用扩展方法更好吗?,c#,extension-methods,builder,fluent,C#,Extension Methods,Builder,Fluent,在这个讨论()中,一个响应表明,构建器模式比使用扩展方法创建流畅的接口要好 这可能是真的原因是什么?可拓方法学遵循坚实原则中的“O”。。。我个人只在开发Fluent接口时使用扩展方法,但我想知道是否需要重新考虑这一点…我想到的一件事是,扩展方法不被认为用于Fluent API,而只是扩展类型的功能 构建器模式需要更多的理解,与currying、monad和函数式编程相关 因此,后者是一个更好的概念基础,可以翻译成多种语言,而前者是一种C#行话,在其他语言中可能没有对应物 如果您使用两种方法获得相

在这个讨论()中,一个响应表明,构建器模式比使用扩展方法创建流畅的接口要好


这可能是真的原因是什么?可拓方法学遵循坚实原则中的“O”。。。我个人只在开发Fluent接口时使用扩展方法,但我想知道是否需要重新考虑这一点…

我想到的一件事是,扩展方法不被认为用于Fluent API,而只是扩展类型的功能

构建器模式需要更多的理解,与currying、monad和函数式编程相关

因此,后者是一个更好的概念基础,可以翻译成多种语言,而前者是一种C#行话,在其他语言中可能没有对应物

如果您使用两种方法获得相同的行为,您可以自由选择使用其中一种方法。但是你也应该考虑你需要哪些特性:<强>表达式、可读性、可移植性、安全性、性能<强>这两种选择之间可能有不同的性质。

< P>这描述了扩展方法的缺点。

此外,我认为扩展方法违反了开放/关闭原则,而不是遵循它,因为它们以一种原始创建者可能没有想到的方式引入特性


如果构建者模式实现了相同的目标而没有缺点,那么为什么不改用它呢。

同意,也是基于意见的。以下是对布赖恩、塞维、布赖恩、梅森、内森的看法。。。你们这些家伙在阻止合法的研究。我没有要求任何关于为什么它是真实的意见,我要求的是事情的真相。很明显你们不喜欢真相。掘墓人,但投你一票。以意见为基础的旗帜被抛出的非常不一致,这真的让我很恼火。我已经提出了完全合法的“劣质”标志,但还没有采取行动,并且见证了不止几个好问题被解决。上面提到的缺点都与是否遵循约定而不是配置有关。命名一个方法以消除歧义并准确定义(仅此而已)它的功能与命名一个类一样重要。VisualStudio允许我们继续定义。