Ejemplo n.º 1
0
        public static void RunDelegate2()
        {
            //------创建一个域(方便卸载)----//-----创建Func方法--------//
            var func = NDelegate.CreateDomain("NDelegate2").Func <string, string>("return arg;");

            Assert.Equal("1", func("1"));
        }
Ejemplo n.º 2
0
        public static void RunDelegate5()
        {
            NormalTestModel model = new NormalTestModel();
            var             func  = NDelegate.CreateDomain("NDelegate5").Action <NormalTestModel, int>("arg1.Age=arg2;");

            func(model, 1);
            Assert.Equal(1, model.Age);
        }
Ejemplo n.º 3
0
        public static void RunDelegate4()
        {
            NormalTestModel model = new NormalTestModel();
            var             func  = NDelegate.CreateDomain("NDelegate4").Action <NormalTestModel>("obj.Age=1;");

            func(model);
            Assert.Equal(1, model.Age);
        }
Ejemplo n.º 4
0
        public static int RunDelegate6()
        {
            NormalTestModel model = new NormalTestModel();
            var             func  = NDelegate.CreateDomain("NDelegate6").Action <NormalTestModel, int, int>("arg1.Age=arg2+arg3;");

            func(model, 1, 2);
            func.DisposeDomain();
            return(model.Age);
        }
Ejemplo n.º 5
0
        public void TestType1()
        {
            var type = NDelegate.CreateDomain("NDelegate8").GetType(
                @"public class  DomainTest1{
                        public string Name;
                        public int Operator;
                }");

            Assert.Equal("DomainTest1", type.Name);
        }
Ejemplo n.º 6
0
        public void Test6()
        {
            string assemblyName           = "tsda";
            AssemblyCSharpBuilder builder = new AssemblyCSharpBuilder(assemblyName);

            builder.Compiler.Domain = DomainManagement.Create("a");
            builder.Add("public class TSDA{}");
            var assembly = builder.GetAssembly();

            assembly.RemoveReferences();
            Assert.NotNull(assembly);
            builder = new AssemblyCSharpBuilder();
            builder.Compiler.Domain = DomainManagement.Create("a");
            builder.Add("public class TSDA{}");
            var assembly1 = builder.GetAssembly();

            Assert.NotEqual(assembly, assembly1);
            var func = NDelegate.CreateDomain("a").Func <string>("return typeof(TSDA).Assembly.FullName;");

            Assert.Equal(assembly1.FullName, func());
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            //NatashaInitializer.Initialize();
            //注册+预热组件 , 之后编译会更加快速
            NatashaInitializer.Preheating();
            string    str = "return \"S1,S2,3,4,5,6\".Split(\",\").Where(u => u.StartsWith(\"D\")).Count()>0;";
            Stopwatch sw  = new Stopwatch();

            sw.Start();

            //NDelegate.CreateDomain("a", item => item.DisableSemanticCheck().ConfigCompilerOption(opt => opt.AddSupperess("CS8019").UseSuppressReportor(false)))
            //List<Task> tasks = new List<Task>();
            //for (int i = 0; i < 4; i++)
            //{
            //    tasks.Add(Task.Factory.StartNew(() => {
            //        for (int i = 0; i < 50; i++)
            //        {
            //            str = $"return \"S1,{i},3,4,5,6\".Split(\",\").Where(u => u.StartsWith(\"D\")).Count()>0;";
            //            var func = NDelegate.CreateDomain("MyDomain", item => item.DisableSemanticCheck().ConfigCompilerOption(opt => opt.AddSupperess("CS8019").UseSuppressReportor(false))).Func<bool>(str);
            //            var aa = func();
            //            //func.DisposeDomain();
            //        }
            //    }));
            //}
            //Task.WaitAll(tasks.ToArray());

            for (int i = 0; i < 200; i++)
            {
                str = $"return \"S1,{i},3,4,5,6\".Split(\",\").Where(u => u.StartsWith(\"D\")).Count()>0;";
                var func = NDelegate.CreateDomain("MyDomain", item => item.DisableSemanticCheck().ConfigCompilerOption(opt => opt.AddSupperess("CS8019").UseSuppressReportor(false))).Func <bool>(str);
                var aa   = func();
                //func.DisposeDomain();
            }
            sw.Stop();
            var yb = sw.ElapsedMilliseconds;//毫秒

            Console.ReadKey();
        }
Ejemplo n.º 8
0
        public static void RunDelegate7()
        {
            var func = NDelegate.CreateDomain("NDelegate7").Func <string>("return OtherNameSpaceMethod.FromDate(DateTime.Now);");

            Assert.Equal(DateTime.Now.ToString("yyyy-MM"), func());
        }
Ejemplo n.º 9
0
        public static void RunDelegate3()
        {
            var func = NDelegate.CreateDomain("NDelegate3").Func <string, string, string>("return arg1+arg2;");

            Assert.Equal("12", func("1", "2"));
        }
Ejemplo n.º 10
0
        public static void RunDelegate1()
        {
            var func = NDelegate.CreateDomain("NDelegate1").Func <string>("return \"1\";");

            Assert.Equal("1", func());
        }