.Net will happily execute a calli with a generic return type, whereas Mono will refuse to. Mono is probably doing the right thing here. Fixed by resolving the generic return into a concrete type.