As I remember it was done with the debugger/tracing API on mono, which is very different from the windows version and easier to extend.
Which is where CAS comes in - you're talking "minimal trust"
I never fully understood CAS... I'm thinking I'd just use reflection and disallow code that makes references to certain assemblies... hammer/fly
Even that's a bad move, you want to work from a white list, rather than a black list. If an assembly is referenced which is not on the list then you don't run the code.
The simple sandbox stuff is .NET 2.0. Code.
Thanks for the link... I'll be sure to check it out tonight
Glad to shed some light