欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > .Net C#执行JavaScript脚本

.Net C#执行JavaScript脚本

2024/10/24 21:24:29 来源:https://blog.csdn.net/zhu7478848/article/details/140149472  浏览:    关键词:.Net C#执行JavaScript脚本

文章目录

  • 前言
  • 一、安装
  • 二、执行 JavaScript 脚本
  • 三、与脚本交互
  • 四、JS 调用 C# 方法
  • 五、多线程使用
  • 总结


前言

    ClearScript 是一个 .NET 平台下的开源库,用于在 C# 和其他 .NET 语言中执行脚本代码。它提供了一种方便和安全的方法来将脚本与应用程序集成,并允许将应用程序暴露给脚本以进行更高级别的自定义和交互。


一、安装

二、执行 JavaScript 脚本

using var engine = new V8ScriptEngine();
engine.Execute("var a = 10; var b = 20; var c = a + b;");
var result = engine.Script.c;
Console.WriteLine(result); // 输出 30

三、与脚本交互

    在执行 JavaScript 脚本时,可以将 C# 对象传递给脚本,以便脚本可以访问这些对象。要将对象传递给脚本,需要使用 AddHostObject() 方法将对象添加到 JavaScript 引擎中。

/// <summary>
/// Person类需要为Public,V8引擎才能正常访问
/// </summary>
public class Person
{public string? Name { get; set; }public int Age { get; set; }
}/// <summary>
/// JS与C#交互
/// </summary>
static void InteractionBetweenJsAndCsharp()
{using var engine = new V8ScriptEngine();var person = new Person { Name = "沙漠尽头的狼", Age = 18 };engine.AddHostObject("person", person);engine.Execute("var c = person.Name + ' 才 ' + person.Age + ' 岁呀?';");var result = engine.Script.c;Console.WriteLine(result); // 沙漠尽头的狼 才 18 岁呀?
}

四、JS 调用 C# 方法

    除了将 C# 对象传递给 JavaScript 外,还可以在 JavaScript 中调用 C# 方法。要在 JavaScript 中调用 C# 方法,需要创建一个包含方法的类,并使用 AddHostObject() 方法将该类添加到 JavaScript 引擎中。

/// <summary>
/// JS调用C#的方法
/// </summary>
static void JsCallCSharpMethod()
{using var engine = new V8ScriptEngine();var calculator = new Calculator();engine.AddHostObject("calculator", calculator);engine.Execute("var result = calculator.Add(15, 20)");var result = engine.Script.result;Console.WriteLine(result); // 35
}public class Calculator
{public int Add(int a, int b){return a + b;}
}

五、多线程使用

    ClearScript 还支持在多个线程中使用 JavaScript 引擎。要在多个线程中使用 JavaScript 引擎,需要创建多个 JavaScript 引擎实例,并使用各自的线程来执行脚本。

using System.Threading.Tasks;
using Microsoft.ClearScript.V8;var engine1 = new V8ScriptEngine();
var engine2 = new V8ScriptEngine();Task.Run(() =>
{engine1.Execute("var a = 'Hello from thread 1!'");
});Task.Run(() =>
{engine2.Execute("var b = 'Hello from thread 2!'");
});

总结

    本文介绍了 ClearScript 的使用方法和特点,包括如何在 C# 中执行 JavaScript 脚本、如何与脚本交互、如何调用 C# 方法、多线程使用等方面的内容。ClearScript 提供了一种方便和安全的方法来将脚本与应用程序集成,并允许将应用程序暴露给脚本以进行更高级别的自定义和交互。通过使用 ClearScript,可以为应用程序添加灵活性和可扩展性,并在应用程序中实现动态脚本执行功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com