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