C#使用技巧之呼叫JS指令碼方法二
阿新 • • 發佈:2019-02-04
在上篇 C#使用技巧之呼叫JS指令碼方法一 中向大家介紹了C#呼叫js檔案中的js方法,今天給大家介紹另一種呼叫方法:
1、建立WinForm專案。
2、在From1上增加一個文字框一個按鈕。
3、進入Form1.cs編碼後臺程式碼。
Form1.cs程式碼如下:
1 private void button1_Click(object sender, EventArgs e) 2 { 3 4 //輸入JS方法引數 5 object[] para = new object[] { this.textBox1.Text.Trim() };6 7 string str = GetJsMethd("test", para); 8 9 MessageBox.Show(str); 10 } 11 12 /// <summary> 13 /// 執行JS方法 14 /// </summary> 15 /// <param name="methodName">方法名</param> 16 /// <param name="para">引數</param>17 /// <returns></returns> 18 private static string GetJsMethd(string methodName, object[] para) 19 { 20 StringBuilder sb = new StringBuilder(); 21 sb.Append("package aa{"); 22 sb.Append(" public class JScript {"); 23 sb.Append("public static function test(str) {"); 24 sb.Append(" return 'Hello,'+str;"); 25 sb.Append(" }"); 26 sb.Append(" }"); 27 sb.Append("}"); 28 29 CompilerParameters parameters = new CompilerParameters(); 30 31 parameters.GenerateInMemory = true; 32 33 CodeDomProvider _provider = new Microsoft.JScript.JScriptCodeProvider(); 34 35 CompilerResults results = _provider.CompileAssemblyFromSource(parameters, sb.ToString()); 36 37 Assembly assembly = results.CompiledAssembly; 38 39 Type _evaluateType = assembly.GetType("aa.JScript"); 40 41 object obj = _evaluateType.InvokeMember("test", BindingFlags.InvokeMethod, 42 null, null, para); 43 44 return obj.ToString(); 45 }
4、測試效果
注:在後臺程式碼中如果找不到名稱空間:Microsoft.JScript.JScriptCodeProvider,請參照下圖增加引用