public static void RunDelegate2() { //------创建一个域(方便卸载)----//-----创建Func方法--------// var func = NDelegate.CreateDomain("NDelegate2").Func <string, string>("return arg;"); Assert.Equal("1", func("1")); }
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); }
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); }
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); }
public void TestType1() { var type = NDelegate.CreateDomain("NDelegate8").GetType( @"public class DomainTest1{ public string Name; public int Operator; }"); Assert.Equal("DomainTest1", type.Name); }
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()); }
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(); }
public static void RunDelegate7() { var func = NDelegate.CreateDomain("NDelegate7").Func <string>("return OtherNameSpaceMethod.FromDate(DateTime.Now);"); Assert.Equal(DateTime.Now.ToString("yyyy-MM"), func()); }
public static void RunDelegate3() { var func = NDelegate.CreateDomain("NDelegate3").Func <string, string, string>("return arg1+arg2;"); Assert.Equal("12", func("1", "2")); }
public static void RunDelegate1() { var func = NDelegate.CreateDomain("NDelegate1").Func <string>("return \"1\";"); Assert.Equal("1", func()); }