AScript - C#轻量级动态脚本引擎
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、简介AScript 是一个基于 C# 的动态脚本解析、编译与执行引擎。它支持C# 语法,可以让应用程序在不重新编译的情况下动态执行用户自定义的脚本逻辑。 开源地址:https://gitee.com/rockey627/ascript 二、核心特性语法支持
执行模式
多层级上下文
宿主集成
三、快速开始 1 // NuGet: Install-Package AScript 2 using AScript; 四、应用场景1. 规则引擎将业务规则以脚本形式存储,运行时动态加载执行,无需发版即可调整规则逻辑。 1 string filePath = @"./rule.txt"; 2 // 缓存时间,-1表示永久缓存,0表示不缓存,大于0表示缓存时间(毫秒) 3 int cacheTime = -1; 4 // 文件路径作为缓存key 5 string cacheKey = filePath; 6 // 文件修改时间作为版本号(或者计算文件md5作为版本号) 7 string cacheVersion = File.GetLastWriteTime(filePath).ToFileTimeUtc().ToString(); 8 // 如果文件未改动,则从缓存中执行,否则重新读取->解析->编译->缓存->执行 9 var script = new Script(); 10 script.Eval(() => File.OpenRead(filePath), cacheTime, cacheKey, cacheVersion); 2. 公式计算器让用户自定义计算公式,系统负责解析执行,如财务模板、绩效计算等场景。 3. 游戏脚本系统为游戏提供轻量级脚本支持,玩家可编写脚本实现自动任务、宏命令等功能。 4. 插件扩展机制允许第三方编写脚本扩展程序功能,沙箱执行保障安全性。 5. 多支线执行基于多层级上下文,支线间数据互不干扰,同时共享父级公共逻辑。 1 var rootContext = new ScriptContext(); 2 rootContext.SetVar("n", 8); 3 rootContext.AddFunc<int, int, int>("sum", (a, b) => a + b); 4 5 // 支线1 6 var context1 = new ScriptContext(rootContext); 7 context1.SetVar("x", 100); 8 var script1 = new Script(context1); 9 var result1 = script1.Eval("sum(x, n)"); 10 Console.WriteLine(result1); // 108 11 12 // 支线2 13 var context2 = new ScriptContext(rootContext); 14 context2.SetVar("y", 50); 15 var script2 = new Script(context2); 16 var result2 = script2.Eval("sum(y, n)"); 17 Console.WriteLine(result2); // 58 五、结语AScript 体积小巧、接口简洁,适合需要嵌入脚本能力的 .NET 应用。多层级上下文设计让它在多支线并行执行场景中也能游刃有余。如果您正在寻找一款轻量、高效、易集成的动态脚本引擎,不妨一试。 转自https://www.cnblogs.com/rockey627/p/19843135 该文章在 2026/5/8 10:17:23 编辑过 |
关键字查询
相关文章
正在查询... |