【问题标题】:jQuery Method Chaining vs. C#/VB Lack of Method ChainingjQuery 方法链与 C#/VB 缺乏方法链
【发布时间】:2012-06-08 05:22:30
【问题描述】:

jQuery 的哪些内在属性及其满足的要求使其成为构建器模式和方法链的理想候选者?

换一种方式问,C#/VB .NET 核心库是否可以用更多类似于 jQuery 的方法链来重写,或者是否有一些继承、限制因素?

这很大程度上归结为 JavaScript 是动态的还是像 VB/C# 或 jQuery 主要对 DOM 操作感兴趣的类型?

【问题讨论】:

  • -1 表示基于错误前提的问题。
  • @JohnSaunders:我阅读问题的方式与您最初的方式相同。结果(根据他对我的回答的评论,并仔细阅读了这个问题)他在问是否可以重写核心 .NET 库以更多地使用方法链接,或者是否存在一些固有的技术理论上会阻止这种情况的因素。

标签: c# jquery method-chaining builder-pattern


【解决方案1】:

你可以在 C# 中链接方法就好了。例如,这是一直使用 Linq 完成的。

要了解 C# 中的方法链接实现,请参阅

Method-Chaining in C#

这有时也称为fluent interface

基本思想是每个参与链的方法都返回this,这样就可以通过引用上一次调用的返回值来调用该类的其他方法。

没有什么技术可以阻止核心库被重写以更广泛地使用方法链。但实际上,重写核心库会破坏所有现有的 .NET 应用程序。

当然可以编写一个库,为核心库中的事物提供流畅的接口。想到的一件事是在 System.IO 中对 Streams 和 Readers 的处理。

【讨论】:

  • 是的,是的,我知道这是可能的。我的问题是为什么不使用核心库完成,而使用 jQuery 完成?
  • 您可能不得不向编写核心库的人询问明确的答案。我的猜测是,当 .NET 1.0 在 2000-2001 年的时间范围内工作时,该模式并未在行业中广泛使用,因此团队没有考虑实施它。甚至 .NET 1.0 也具备实现方法链接所需的一切,因此这当然不是任何技术限制。
【解决方案2】:

没有,有几个 C# 库是用类似的“链接”编写的。它通常称为 Fluent API。一个例子是 Fluent NHibernate,但还有更多,因为它只是一种结构化代码的方式。这不是动态与静态语言的限制

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多