【问题标题】:How do I catch an update event in ClearScript.V8?如何在 ClearScript.V8 中捕获更新事件?
【发布时间】:2017-07-01 13:04:48
【问题描述】:

有没有一种方法可以实例化一个 Javascript 变量(使用 ClearScript.V8)并在 C# 中捕获更新,以便我可以更新数据库中的值?

当我使用对象时它会起作用,如下所示:

public class SmartBoolean : ISmartVariable
{
    private Boolean _simulation;
    private Guid UserId;
    private long userKeyId;
    private long variableKeyId;
    private string Name;
    private Boolean _value;
    public Boolean value
    {
        get {
            return _value;
        }

        set {
            _value = value;

            if (!_simulation)
            {
                if (value)
                    new SmartCommon().SetTrue(userKeyId, variableKeyId);
                else
                    new SmartCommon().SetFalse(userKeyId, variableKeyId);
            }
        }
    }

    public SmartBoolean(Guid UserId, long userKeyId, long variableKeyId, string Name, Boolean value, Boolean simulation)
    {
        this.Name = Name;
        this._value = value;
        this.UserId = UserId;
        this.userKeyId = userKeyId;
        this.variableKeyId = variableKeyId;
        this._simulation = simulation;
    }

    public Boolean toggle()
    {
        this.value = !this._value;

        return this._value;
    }
}

但是 Javascript 代码需要使用像

这样的对象

变量.值

而不是简单的

变量

.

【问题讨论】:

    标签: c# .net v8 clearscript


    【解决方案1】:

    您可以使用调用智能变量的访问器定义 JavaScript 全局属性:

    dynamic addSmartProperty = engine.Evaluate(@"
        (function (obj, name, smartVariable) {
            Object.defineProperty(obj, name, {
                enumerable: true,
                get: function () { return smartVariable.value; },
                set: function (value) { smartVariable.value = value; }
            });
        })
    ");
    
    var smartVariable = new SmartBoolean(...);
    addSmartProperty(engine.Script, "variable", smartVariable);
    
    engine.Execute("variable = true");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多