ClearScript可以帮助开发者添加脚本到.NET应用,当前支持JavaScript(V8和JScript)和VBScript。
示例usig System;usig Microsoft.ClearScript;usig Microsoft.ClearScript.V8;// create a script egieusig (var egie = ew V8ScriptEgie()){ // expose a host type egie.AddHostType("Cosole", typeof(Cosole)); egie.Execute("Cosole.WriteLie('{0} is a iterestig umber.', Math.PI)"); // expose a host object egie.AddHostObject("radom", ew Radom()); egie.Execute("Cosole.WriteLie(radom.NextDouble())"); // expose etire assemblies egie.AddHostObject("lib", ew HostTypeCollectio("mscorlib", "System.Core")); egie.Execute("Cosole.WriteLie(lib.System.DateTime.Now)"); // create a host object from script egie.Execute(@" birthday = ew lib.System.DateTime(2007, 5, 22); Cosole.WriteLie(birthday.ToLogDateStrig()); "); // use a geeric class from script egie.Execute(@" Dictioary = lib.System.Collectios.Geeric.Dictioary; dict = ew Dictioary(lib.System.Strig, lib.System.It32); dict.Add('foo', 123); "); // call a host method with a output parameter egie.AddHostObject("host", ew HostFuctios()); egie.Execute(@" itVar = host.ewVar(lib.System.It32); foud = dict.TryGetValue('foo', itVar.out); Cosole.WriteLie('{0} {1}', foud, itVar); "); // create ad populate a host array egie.Execute(@" umbers = host.ewArr(lib.System.It32, 20); for (var i = 0; i < umbers.Legth; i++) { umbers[i] = i; } Cosole.WriteLie(lib.System.Strig.Joi(', ', umbers)); "); // create a script delegate egie.Execute(@" Filter = lib.System.Fuc(lib.System.It32, lib.System.Boolea); oddFilter = ew Filter(fuctio(value) { retur (value & 1) ? true : false; }); "); // use LINQ from script egie.Execute(@" oddNumbers = umbers.Where(oddFilter); Cosole.WriteLie(lib.System.Strig.Joi(', ', oddNumbers)); "); // use a dyamic host object egie.Execute(@" expado = ew lib.System.Dyamic.ExpadoObject(); expado.foo = 123; expado.bar = 'qux'; delete expado.foo; "); // call a script fuctio egie.Execute("fuctio prit(x) { Cosole.WriteLie(x); }"); egie.Script.prit(DateTime.Now.DayOfWeek); // examie a script object egie.Execute("perso = { ame: 'Fred', age: 5 }"); Cosole.WriteLie(egie.Script.perso.ame);}点击空白处退出提示
评论