public void Should_Compile_And_Run_Source_In_Sandbox() { var isolator = new AppDomainIsolator(); var environment = new DefaultEnvironment(); var source = new CSharpSource("using System; using System.IO; namespace Foo { public class Bar { public int Greet() { return 42; } } }"); environment.Register(source); using (var jail = Jail.Create(isolator, environment)) { dynamic bar = jail.Resolve("Foo.Bar"); int result = bar.Greet(); Assert.AreEqual(42, result); } }
public void Loads_And_Calculates_With_Dynamic_Proxy_In_Separate_AppDomain() { var isolator = new AppDomainIsolator(); var environment = new DefaultEnvironment(); environment.Register("Ext/Calculator.dll"); using (var jail = Jail.Create(isolator, environment)) { dynamic calculator = jail.Resolve("Calculator.SimpleCalculator"); int result = calculator.Sum(new[] {1, 2, 3, 4, 5}); calculator.Name = "simple calculator"; Assert.AreEqual(15, result); Assert.AreEqual("simple calculator", calculator.Name); } Assert.IsFalse(AppDomain.CurrentDomain.GetAssemblies().Any(asm => asm.GetName().Name == "Calculator")); }
public void Loads_And_Calculates_With_Dynamic_Proxy_In_Separate_AppDomain() { var isolator = new AppDomainIsolator(); var environment = new DefaultEnvironment(); environment.Register("Ext/Calculator.dll"); using (var jail = Jail.Create(isolator, environment)) { dynamic calculator = jail.Resolve("Calculator.SimpleCalculator"); int result = calculator.Sum(new[] { 1, 2, 3, 4, 5 }); calculator.Name = "simple calculator"; Assert.AreEqual(15, result); Assert.AreEqual("simple calculator", calculator.Name); } Assert.IsFalse(AppDomain.CurrentDomain.GetAssemblies().Any(asm => asm.GetName().Name == "Calculator")); }