There's no generic way to do this because at the DLR level there's no required calling convention for languages. But with both IronPython and IronRuby we'll fill in certain magical parameters. For IronPython it's CodeContext and for IronRuby I believe it's RubyContext. But it means you'll now be taking a direct dependency upon the language implementations.
There's also no way to actually go back to the ScriptRuntime. ScriptRuntime is designed to be remotable and exposes an API that's completely remotable. It's backed by a ScriptDomainManager class which has all the functionality you'd expect to find on ScriptRuntime. And languages never get ahold of ScriptRuntime (or other APIs that support remoting) so they're always running locally in their own app domain. But you'll generally find that SDM is just as useful.
So you just do:
public class Foo {
public void Bar(CodeContext context) {
context.LanguageContext.DomainManager.GetLanguageByName("IronRuby");
}
}
If you want the API to be callable by other languages you'll want to add an overload that doesn't take CodeContext.