【发布时间】:2011-04-11 19:14:45
【问题描述】:
我想使用 Jint 下的 DynamicObject 类,并且我已经构建了一个示例来执行此操作。第一个断言正确通过,但第二个断言失败。
有什么方法可以做到吗,或者你知道任何其他的 javascript 引擎可以做到吗?
public void Jtest()
{
Jint.JintEngine engine = new JintEngine();
dynamic subject = new MyDynamicObject();
dynamic x = subject.myProp.otherProp;
Assert.AreEqual(subject, x);
engine.SetParameter("myClass", subject);
object result = engine.Run(@"return myClass.myProp.otherProp;");
// result is null here
Assert.AreEqual(subject, result);
}
public class MyDynamicObject : System.Dynamic.DynamicObject
{
public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result)
{
result = this;
return true;
}
}
【问题讨论】:
-
为什么你期望
@"return myClass.myProp.otherProp;"的结果是字符串"otherProp"? (而不是对象subject?) -
@dtb 谢谢你,我已经修正了错字。
-
那么,在调用
engine.Run之后,result实际上包含什么? -
如果你这样做,例如
engine.SetParameter("myClass", 42);和engine.Run(@"return myClass;");,它是否有效? -
这是一个有趣的问题。你应该直接在jint论坛上提问,你会得到开发者的更多帮助:jint.codeplex.com/discussions
标签: c# javascript dynamic jint