You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为C# ClearScript V8ScriptEngine添加静态函数?

为V8ScriptEngine添加全局静态函数的实现方案

直接通过SetValue注入委托

ClearScript的V8ScriptEngine支持直接将.NET委托作为全局函数注入,和你在Jint中的用法逻辑一致,示例代码如下:

// 示例1:直接传入已定义的委托
Action<string> printLog = Console.WriteLine;
_engine.SetValue("print", printLog);

// 示例2:绑定静态方法生成委托后注入
var targetMethod = typeof(Console).GetMethod("WriteLine", new[] { typeof(string) });
var methodDelegate = Delegate.CreateDelegate(typeof(Action<string>), targetMethod);
_engine.SetValue("consolePrint", methodDelegate);

注入完成后,即可在JavaScript中直接调用:

print("测试日志");
consolePrint("通过静态方法绑定的输出");

使用AddHostFunction快速绑定

如果需要快速创建并绑定函数逻辑,可以用AddHostFunction方法,直接传入匿名委托实现:

// 绑定一个求和函数
_engine.AddHostFunction("sum", new Func<int, int, int>((a, b) => a + b));
// 绑定无参返回值函数
_engine.AddHostFunction("getCurrentTime", new Func<DateTime>(() => DateTime.Now));

暴露静态类实现批量静态方法调用

如果你的静态函数属于某个.NET静态类,也可以直接将整个类暴露给JavaScript环境,这样就能直接调用类中的所有静态方法:

// 假设存在自定义静态类MyToolkit
_engine.AddHostType("Toolkit", typeof(MyToolkit));

在JavaScript中调用方式:

const result = Toolkit.CalculateTax(1000);

内容的提问来源于stack exchange,提问作者Pbnd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:22:04