Limit namespace access on compiled scripts

Hello, I’ll try and keep this as brief as possible:

I am building a sort of modding system for a certain aspect of my game.
It basically allows the common user to write some C# code which will be used to give access to certain elements of the game at certain times. Like giving the host of a multiplayer server the ability to decide what map to load with what parameters etc…

I already have the assembly loading working. It’s quite neat and not very complicated XD
But now I’ve come to the point where it would be very nice if I could give the “user” some access to assemblies such as System and UnityEngine.
I could of course include the dll’s in the ReferenceAssemblies property of the CompilerParameters, but that would give them access to possibly harmful functionality, such as reflection, Instantiation, Destroy as well as many others…

How would I limit the assembly references to only certain namespaces, such as System.IO and System.Collections, without giving access to System.Reflection?

Now for the posting of some possibly relevant code:

//Excuse the UnityScript... I find it quicker to do things in
//Create compiler parameters
var params:CompilerParameters = new CompilerParameters();
params.GenerateExecutable = false;
params.GenerateInMemory = false;
//Add assembly reference
//I wish I could put System.IO in here instead of System.dll

//Create provider and load/compile assembly
var provider:CodeDomProvider = new CodeDomProvider.CreateProvider("CSharp");
var results:CompilerResults = provider.CompileAssemblyFromFile(params, path);

I hope this is even possible :wink:
Thank you,


I forgot to add: Is it possible to add: Is it possible to add the current Assmbly to that list? So I could inherit a class etc., or do I have to make my own assembly and include that in the project? (Not that it’s hard, just a minor pain XD)

Have you seen this?

CAS: c# - .NET/Security: Limiting runtime-loaded assemblies from accessing certain APIs - Stack Overflow

MAF: c# - Restrict plug-in assembly code access - Stack Overflow