Возможно, это бесполезно, но вы можете поиграть с внутренними полями делегата, чтобы он вызывал произвольный код: http://www.atrevido.net/blog/2005/01/28/Inline+X86+ASM+In+C.aspx
См. Комментарии для большего количества предостережений и других подходов. Преимущество игры непосредственно с целью делегата состоит в том, что (AFAIK) вы не получите управляемый неуправляемый переход, как если бы вы использовали GetDelegateForFunctionPointer или другие подходы взаимодействия.
С другой стороны, это означает, что вы должны закодировать его вручную и убедиться, что соглашения о вызовах выстроены в линию и так далее. Это, вероятно, хрупко, и накладные расходы на вызов делегата могут сделать его не стоящим.