Обычный способ сделать это в современном C# состоит в том, чтобы определить аргументы как Action<>
(без возвращаемого типа, void
) или Func<>
(с возвращаемым типом) и передать лямбду или обычную функцию, когда named.
Таким образом, соответствующая сигнатура Register в вашем случае выглядит следующим образом:
void Register(Func<int, bool> signin, Func<bool> signout)
и вызывается так же, как в c ++, передавая имя определенных функций в Ваш код или напрямую с лямбдами:
Register((int id) => { Console.WriteLine($"logged in user with id {id}!"; return true; }, () => { Console.WriteLine("Sign out callback called."); return true; });
Примечание: int
должен быть необязательным в лямбде здесь.