1. 程式人生 > >C#使用技巧之呼叫JS指令碼方法二

C#使用技巧之呼叫JS指令碼方法二

在上篇 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,請參照下圖增加引用