コード例 #1
0
ファイル: RoslynTests.cs プロジェクト: jingyiliu/jails
        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);
            }
        }
コード例 #2
0
            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"));
            }