在此页面上,Scott Hanselman展示了 Micro-ORMs Dapper 和 Massive 的两个示例,Massive-example 引起了我的兴趣,因为我看不出他们如何实现该语法。
示例如下,我将把它分成几行而不是一长行:
var tbl = new Products();
var products = tbl.All(where: "CategoryID = @0 AND UnitPrice > @1",
orderBy: "ProductName", limit: 20, args: 5,20);
^----+---^
|
+-- this
他们是如何实现这种语法的,允许args
有多个值?我假设params
基于 - 的参数,因为这是唯一允许这样做的事情,但我不明白他们如何构造允许这样做的方法,因为在我看来,我所有的尝试最终都会抱怨命名参数并修复位置参数的顺序错误。
我尝试了这样的测试方法:
public static void Test(string name, int age, params object[] args)
{
}
然后使用命名参数:
Test(age: 40, name: "Lasse", args: 10, 25);
但我得到的只是:
命名参数规范必须出现在所有固定参数指定之后
所以显然这是错误的。此外,我在源代码中看不到任何允许这样做的东西,但也许我找错了地方。
我在这里想念什么?