Как они реализовали этот синтаксис в Massive Micro-ORM, несколько параметров args?

Здесь, на этой странице, Скотт Хансельман показывает два примера из Micro-ORM Dapper и Massive, и пример Massive меня заинтересовал, потому что я не понимаю, как они могли бы реализовать этот синтаксис.

Пример следующий: где я собираюсь разбить его на несколько строк вместо одной длинной:

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);

Но все, что я получил, это:

Спецификации именованных аргументов должны появиться после того, как были указаны все фиксированные аргументы

, поэтому очевидно, что это неверно. Также я не вижу в источнике ничего, что позволяло бы это сделать, но, возможно, я ищу не в том месте.

Что мне здесь не хватает?

6
задан Lasse V. Karlsen 26 May 2011 в 22:05
поделиться