Ну, в общем, если вы хотите создать делегат, который будет принимать некоторую существующую функцию и применять предварительно заданный набор аргументов, вам нужно будет обернуть функцию внутри другой.
например.,
Рассмотрим функцию Foo()
, которая принимает один аргумент string
и возвращает int
(которая имеет такую же сигнатуру, что и Func<string, int>
):
int Foo(string str)
{
return str.Length + 8941;
}
Если вы хотите использовать это для создания делегата, который возвращает результат вызова Foo
строки "bar"
, вы можете сделать это:
Func<int> foobar = () => Foo("bar");
Итак, обратите внимание, что мы создали новый делегат, лямбда-выражение, которое ничего не берет и (в этом случае) возвращает результат вызова Foo("bar")
.
Вы можете применить то же самое в своем коде:
KeyBindings[Keys.Right] += new Action(() => Method1(argument));
KeyBindings[Keys.Right] += new Action(() => Method2(argument1, argument 2));