javascript - 如果我使用 Jint 引擎在 JavaScript 代码中定义一个 .Net 类会发生什么

标签 javascript c# .net jint

Jint 中,您可以在 JS 中访问 .Net 类。

JS 文件代码:

var write = function (msg) {

    var log = System.Console.WriteLine;
    log(msg);
};

C#代码

 Engine jsEngine = new Engine(e=>e.AllowClr());
 string script = System.IO.File.ReadAllText("file1.js");
 jsEngine.Execute(script);
 jsEngine.Invoke("write", "Hello World!");  //Displays in Console: "Hello World!"
  • 我不明白后台发生了什么?哪个编译器会编译 JS 文件中注入(inject)的 c# 代码? C# 编译器还是 JS?
  • 如果我在JS文件中声明了C#List,生成的对象是JS对象还是C#对象?

最佳答案

您没有注入(inject) C# 代码,Jint 解释器会理解您引用的是 .NET 类,因此会执行此代码。因为 Jint 是用 .NET 编写的,所以它可以运行您要求的任何 .NET 代码。

此外,Jint 不编译任何东西,它读取每个 javascript 语句并尝试一个接一个地评估它们,跟踪您正在声明和使用的所有变量、函数和其他 JS 工件。

关于javascript - 如果我使用 Jint 引擎在 JavaScript 代码中定义一个 .Net 类会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115183/

相关文章:

c# - 如何将 wpf ListBox 的 ItemTemplate 嵌入到 Window 的资源中?

.net - 以编程方式将 SSL 证书绑定(bind)到端口

c# - Odata 未找到 NavigationLink 工厂

c# - 'MyClass' 的类型初始值设定项抛出异常

asp.net - 如果未传递参数,如何避免vb.net中的请求查询字符串异常

c# - "Chunked"内存流

带大括号的 JavaScript const,其中有 2 个用冒号分隔的变量

PHP、围绕链接的 JavaScript

javascript - 让 jQuery 动态字段独一无二

javascript - 具有多个不同高度小部件的两列布局,如何使小部件可折叠并保持页面流动?