//Those handler functions would be a template function when this <censored> c# could //accept constructors with params for the template param types. //One still can use two-fase-construction to enable templetization here, //but this seems to me even uglier than copy-pasted handlers private static void FuncHandler(Player player, Command cmd) { FuncDrawOperation operation = new FuncDrawOperationPoints(player, cmd); DrawOperationBegin(player, cmd, operation); }