Вы можете сделать что-то вроде:
private Action CallBackFunction {get; set;}
public KeyEvent(Action callback) {
CallBackFunction = callback;
}
Что может быть создано:
new KeyEvent(MyFunction);
Где MyFunction - имя некоторой функции в этом классе
Класс KeyEvent может затем вызвать эту функцию с помощью:
CallBackFunction();
Класс Action также позволяет передавать строго типизированные параметры, а класс Func можно использовать для методов, возвращающих результат.