Вы можете использовать Action
, чтобы сделать это
using System;
// ...
public void DoSomething(Action callback)
{
// do something
callback?.Invoke();
}
и либо передать вызов метода, например
private void DoSomethingWhenDone()
{
// do something
}
// ...
DoSomething(DoSomethingWhenDone);
, либо использовать лямбду
DoSomething(() =>
{
// do seomthing when done
}
);
Вы также можете добавить параметры, например
public void DoSomething(Action<int, string> callback)
{
// dosomething
callback?.Invoke(1, "example");
}
и снова передать метод, такой как
private void OnDone(int intValue, string stringValue)
{
// do something with intVaue and stringValue
}
// ...
DoSomething(OnDone);
или лямбда
DoSomething((intValue, stringValue) =>
{
// do something with intVaue and stringValue
}
);
В качестве альтернативы также см. Делегаты
и особенно для делегатов с динамическим числом параметров и типами Извлечение этого сообщения