Cargando ensamblados desde una aplicación .Net en un 'entorno de espacio aislado'

Estoy desarrollando actualmente una aplicación en donde un usuario elegirá dinámicamente dlls y la aplicación ejecutará algunos de los métodos en ese dll. si sigues el primer enlace, verás que estoy desarrollando una especie de Robocode aplicación de juego usando .Net Framework).

Por ejemplo, cuando comienza la batalla, larune ejecuta el método @ del dll.

Dado que lo que se especificó en el método de ejecución se ejecutará, hay bastantes restricciones de seguridad que deben aplicarse.

Me gusta, por ejemplo, si el usuario que programó el dll, en lugar de usar solo los métodos que son aplicables desde la interfaz (métodos que usa el robot para caminar y disparar, etc.), invoca métodos que recuperarán archivos y tal vez incluso eliminar archivos del disco duro ... y cuando otro usuario carga ese dll en su computadora, esos métodos serán invocados en su PC y sus archivos serán modificados por este código malicioso.

Así, necesito hacer que esta aplicación se ejecute desde una especie deSandboxed Environment para que cualquiera que sea el método invocado, no afectará el disco duro de la computadora en la que se abre el dll.

¿Alguna idea sobre cómo debería comenzar a hacer esto?

Aquí hay un ejemplo de cómo estoy cargando estos dlls e invocando sus métodos:

for (int i = 0; i < robotList.Count; i++)
{
    IRunnable o = robotList[i];
    new Thread(delegate()
    {
        o.run();    
    }).Start();
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta