Вам нужно заключить событие в класс, который принимает параметры типа, например,
class C<T, F>
{
event Mathop<T, F> someevent;
}
Вы не можете подписаться на событие, для которого не определены конкретные типы - представьте, если можете - вы можете добавить любого делегата к этому событию, если он принимает два параметра и возвращает строку!
С помощью приведенного выше кода вы теперь сможете сделать что-то вроде
new C<Int32, Int32>().someevent += MyMethod
где MyMethod имеет подпись
String MyMethod(Int32 a, Int32 b);