Здесь на этой странице Скотт Хансельман показывает два примера из микро-ORM Dapper и Massive, и пример Massive заинтересовал меня, потому что я не понимаю, как они могли реализовать этот синтаксис. 1003 *
Пример выглядит следующим образом: я собираюсь разбить его на несколько строк вместо одной длинной:
var tbl = new Products();
var products = tbl.All(where: "CategoryID = @0 AND UnitPrice > @1",
orderBy: "ProductName", limit: 20, args: 5,20);
^----+---^
|
+-- this
Как они реализовали этот синтаксис, позволяющий args
иметь несколько значений? Я предполагаю аргументы, основанные на params
, потому что это единственное, что позволяет это сделать, но я не понимаю, как они сконструировали метод, позволяющий это сделать, поскольку мне кажется, что все, что я пытаюсь, заканчивается жалобой на named аргументы и аргументы с фиксированной позицией расположены в неправильном порядке.
Я попробовал метод теста, подобный этому:
public static void Test(string name, int age, params object[] args)
{
}
и затем использование именованных аргументов:
Test(age: 40, name: "Lasse", args: 10, 25);
Но все, что я получаю, это:
Спецификации именованных аргументов должны появляться после указания всех фиксированных аргументов
так очевидно, что это неправильно. Также я не вижу в источнике ничего, что могло бы допустить это, но, возможно, я смотрю не в том месте.
Что мне здесь не хватает?