| 分類:[C#]
C#(Visual Studio Express 2012、.NET Framework 4.5、Windows7 64bit)を使用
ScriptControlでJScriptの関数を実行してオブジェクトリテラルの値を取得したいのです。 C#側でdynamicで受け取れば、キーのプロパティ値を使って値を表示できるのですが、 キーのプロパティ値がわからない場合にどのようにすればいいかがわかりません。 受け取った値をC#側で調べたりしたいのです。 インターフェースを実装するのかとも思いますが、実装の仕方が全くわかりませんし、 そのアプローチでいいのかさえわかりません。 また私の使っている用語が正しくないかもしれませんが、ご容赦ください。
よろしくお願いいたします。
---- C#ソースコード (参照設定追加:Microsoft Script Control 1.0) ---- using MSScriptControl; using System; using System.IO; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { IScriptControl scriptCtl = new ScriptControl(); scriptCtl.Language = "JScript"; string fileName = @"C:\test.js"; var enc = Encoding.GetEncoding("utf-8"); var sr = new StreamReader(fileName, enc); string text = sr.ReadToEnd(); scriptCtl.AddCode(text); dynamic ret = scriptCtl.Eval("hoge()"); Console.Write("{0}:{1}", ret.red, ret.yellow); } } }
---- JScriptソースコード(C:\test.js) ---- function hoge(){ var fruit = {"red":"apple", "yellow":"banana"}; return fruit; }
|