Beispiel #1
0
        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; });
        }
Beispiel #2
0
        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);
            }
        }