当创建一个流畅的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的调用只传递了一个参数,因为它是流畅的,它是否以某种方式隐式地从先前链接的调用中拾取其他所需的参数?
如果需要,状态将通过前面的方法存储在对象本身中。
您正在查看一个扩展方法。
扩展方法允许用实例方法语法调用静态方法。例如,
something.MustEqual(1);
等价于
RulesHelper.MustEqual(something, 1);
LINQ
就是一个很好的例子 IEnumerable<T>.OrderBy
返回一个IOrderedEnumerable<T>
第二个接口跟踪顺序,因此IOrderedEnumerable<T>.ThenBy
能够执行子排序。为了使事情更顺利,界面派生自IEnumerable<T>