gpt4 book ai didi

c# - 动态对象和 Jint

转载 作者:行者123 更新时间:2023-11-30 18:43:52 26 4
gpt4 key购买 nike

我想在 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;
}
}

最佳答案

我认为答案在 jint 代码中。要查找属性,它是基于反射的。我不认为反射处理动态对象。也许应该修改代码以使用 lambda 表达式。但在那种情况下,它将不再适用于 2.0。

首先,您应该尝试覆盖方法 GetDynamicMemberNames。也许这有助于通过反射(reflection)找到属性,从而找到 Jint。

关于c# - 动态对象和 Jint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com