如何在net中实现动态执行代码(js的eval)的功能?

本文介绍了一种在.NET环境中使用JS.NET库实现动态代码执行的方法。通过创建一个包含eval方法的JavaScript类,并使用jsc.exe将其编译为DLL,可以在C#项目中调用此方法执行动态生成的JavaScript代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前在用js时候﹐经常使用它的eval方法来完成动态代码的执行。
但是net中好像没有什么好的办法来代替它﹐虽然好像有一个代码编译类﹐但是它太复杂了﹐对于一段简单代码的执行实在是得不偿失。
今天在与同事讨论工作流时﹐听到了它的动态代码节点,居然找到了我很久以来一直想要用到的功能,不
敢独享﹐与大家分享。

原理﹕
使用js.net(因为里面有eval方法)编写一个类﹐类别中新增一个方法来执行动态js代码。
然后使用jsc.exe把它编译成一个dll
在c#项目中把它加入﹐然后传入动态代码﹐呼叫这个类别的这个方法﹐得到结果。
 
1.第一步﹐新增一个js文件
MyEval.js

 

1None.gifclass MyEval{
2None.gif function execute(code:String) :String {    // Method.
3None.gif  return eval(code);
4None.gif }
5None.gif
6None.gif}
7None.gif

 

2.编译成dll

None.gifjsc /target:library /out:MyEval.dll MyEval.js

 

3.编写测试文件
TestEval.cs

 

None.gifusing System;
None.gif
ExpandedBlockStart.gifContractedBlock.gif
class testdot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif 
public static void Main()dot.gif{
InBlock.gif  
string code = "var result:int =0;result==1?\"成功\":\"失败\"";
InBlock.gif  MyEval eval 
= new MyEval();
InBlock.gif  
string result = eval.execute(code);
InBlock.gif  Console.WriteLine(
"The Result is:" + result);
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif

 

4.编译成exe(因为要使用js.net的类﹐所以必须加入Microsoft.JScript这个参考)

None.gifcsc /r:Microsoft.JScript.dll /r:MyEval.dll test.cs

 

5.执行test.exe

我们可以看到结果为"失败"

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值