Я не совсем понимаю, что вы пытаетесь сделать здесь, но я быстро разобью, как работает тип Action
.
Тип Action действует как указатель на функцию, которую можно передать вокруг (в основном делегат с обобщенным синтаксисом c). На самом деле существует два типа этих типов: Func
и Action
. Разница между Func
и Action
заключается в том, что Func
имеет универсальный возвращаемый параметр c, тогда как Action
всегда возвращает void.
Вы вызываете Action
, используя синтаксис вызова метода :
void Test(Action action)
{
action();
}
Теперь параметры generi c являются параметрами в том порядке, в котором они требуются в действии.
В вашем случае у вас есть следующее Action
:
Action<Tool>
, который эквивалентен этому объявлению делегата:
delegate void Action(Tool tool);
Так что, когда вы хотите вызвать этот метод, вы должны передать параметр, который соответствует данному обобщению c тип параметра. Сам метод ничего не возвращает.
Чтобы получить метод для выполнения, вы должны написать следующее:
void TestMethod(Action<Tool> tool)
{
tool(new Tool());
}
Дополнительная информация: