|
■No69523 (B.B さん) に返信
> キーのプロパティ値がわからない場合にどのようにすればいいかがわかりません。
こんな方法でどうでしょう。
using System;
namespace ConsoleApplication1
{
class Program
{
[STAThread]
static void Main()
{
dynamic sc = Activator.CreateInstance(Type.GetTypeFromProgID("ScriptControl"));
sc.Language = "JScript";
sc.AddCode(@"
function hoge(){
var fruit = {'red':'apple', 'yellow':'banana'};
return fruit;
}
function invoker(o,c){return o[c];}
function getMembers(o){
var a = new ActiveXObject('System.Collections.ArrayList');
for(var k in o) { a.Add(k); }
return a;
}
");
dynamic ret = sc.Eval("hoge()");
Console.WriteLine("\r\n直接指定");
Console.WriteLine("{0}:{1}", ret.red, ret.yellow);
Console.WriteLine("\r\nJScript経由");
dynamic invoker = sc.Eval("invoker");
Console.WriteLine("{0}:{1}", invoker(ret, "red"), invoker(ret, "yellow"));
Console.WriteLine("{0}:{1}", sc.Run("invoker", ret, "red"), sc.Run("invoker", ret, "yellow"));
Console.WriteLine("\r\n連想配列の列挙");
foreach (var key in sc.Run("getMembers", ret))
{
Console.WriteLine("Key={0}, Value={1}", key, invoker(ret, key));
}
}
}
}
|