public void SetVars() { var qVar1 = new QVar("$var1"); var qVar2 = new QVar("$var2"); var q = new Query("test", (QField)"name" == qVar1 & ( (QConst)1 != (QConst)2 | new Query("test2", (QField)"id" > qVar2) ) ); q.SetVars((v) => { switch (v.Name) { case "$var1": v.Set("John"); break; case "$var2": v.Set(2); break; } }); Assert.Equal("John", qVar1.Value); Assert.Equal(2, qVar2.Value); q.SetVars((v) => v.Unset()); Assert.Throws <InvalidOperationException>(() => { var v = qVar1.Value; }); Assert.Throws <InvalidOperationException>(() => { var v = qVar2.Value; }); }
protected virtual void SetVariable(QVar var, PermissionContext context) { var.Unset(); var v = context.GetValue(var.Name); if (v != null) { var.Set(v); } else { throw new Exception("Unknown variable in permission rule: " + var.Name); } }