В IronJS у нас есть пользовательский объект, полученный из CommonObject.Мы хотим перехватывать вызовы неопределенных свойств объекта и предоставлять динамические ответы.(Это необходимо, поскольку в нашей ситуации невозможно предварительно зарегистрировать все свойства.)
Мы можем перехватить вызовы функций для этого объекта путем переопределения функции BoxedValue Get(string name)
и предоставитьфункции "на лету" без предварительной регистрации их на объекте.
Мы надеемся, что сможем сделать то же самое с свойствами , но ни одно из переопределений, похоже, не справится с этим.Я надеюсь, что у кого-то достаточно опыта работы с IronJS, чтобы предложить, как мы можем лучше к этому подойти.
Надеюсь, это проясняет, чего мы пытаемся достичь:
IronJS.Hosting.CSharp.Context ctx = new IronJS.Hosting.CSharp.Context();
ctx.SetGlobal("data", new MyCustomObject());
string script = @"var x = data.mydynamicproperty;";
ctx.Execute(script);
Когда скрипт выполняется, мы хотим иметь возможность переопределить и вернуть пользовательское значение.Например (в объявлении класса MyCustomObject):
public override BoxedValue Get(string name) {
if (name == "mydynamicproperty") {
return BoxedValue.Box("test");
}
}
Вышеуказанное переопределение вызывается для функций (например, var x = data.mydynamicfunction();
), но не для свойств.
Любая помощь или предложения будут очень полезныоценили.