当创建一个流畅的api时,他们如何链接方法从之前的方法中获取上下文

本文关键字:方法 何链接 链接 上下文 获取 一个 创建 api 他们 | 更新日期: 2023-09-27 18:11:31

我正在看这个开源项目,流畅的api看起来像:

baseEngine.For<Foo1>()
            .Setup(f => f.Value)
              .MustEqual(1);

然后MustEqual方法的参数列表:

 public static M MustEqual<M, T, R>(this IMustPassRule<M, T, R> mpr, R value)
 {
    return mpr.MustPassRule(new EqualRule<R>(value));
 }

了解更多信息:http://rulesengine.codeplex.com/SourceControl/changeset/view/9077#137411

所以我想要得到的是,对MustEqual的调用只传递了一个参数,因为它是流畅的,它是否以某种方式隐式地从先前链接的调用中拾取其他所需的参数?

当创建一个流畅的api时,他们如何链接方法从之前的方法中获取上下文

如果需要,状态将通过前面的方法存储在对象本身中。

您正在查看一个扩展方法。

扩展方法允许用实例方法语法调用静态方法。例如,

something.MustEqual(1);

等价于

RulesHelper.MustEqual(something, 1);

LINQ

就是一个很好的例子

IEnumerable<T>.OrderBy返回一个IOrderedEnumerable<T>

第二个接口跟踪顺序,因此IOrderedEnumerable<T>.ThenBy能够执行子排序。为了使事情更顺利,界面派生自IEnumerable<T>