Здесь, на этой странице, Скотт Хансельман показывает два примера из 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);
Но все, что я получил, это:
Спецификации именованных аргументов должны появиться после того, как были указаны все фиксированные аргументы
, поэтому очевидно, что это неверно. Также я не вижу в источнике ничего, что позволяло бы это сделать, но, возможно, я ищу не в том месте.
Что мне здесь не хватает?