Esempio n. 1
0
        public void VirtualProperty()
        {
            EvaluationOptions ops = EvaluationOptions.DefaultOptions.Clone();

            ops.FlattenHierarchy = false;

            ObjectValue val = Frame.GetExpressionValue("c", ops);

            Assert.IsNotNull(val);
            val.WaitHandle.WaitOne();
            Assert.IsFalse(val.IsError);
            Assert.IsFalse(val.IsUnknown);

            // The C class does not have a Prop property

            ObjectValue prop = val.GetChild("Prop", ops);

            Assert.IsNull(prop);

            prop = val.GetChild("PropNoVirt1", ops);
            Assert.IsNull(prop);

            prop = val.GetChild("PropNoVirt2", ops);
            Assert.IsNull(prop);

            val = val.GetChild("base", ops);
            Assert.IsNotNull(val);
            val.WaitHandle.WaitOne();
            Assert.IsFalse(val.IsError);
            Assert.IsFalse(val.IsUnknown);

            // The B class has a Prop property, value is 2

            prop = val.GetChild("Prop", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("2", prop.Value);

            prop = val.GetChild("PropNoVirt1", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("2", prop.Value);

            prop = val.GetChild("PropNoVirt2", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("2", prop.Value);

            val = val.GetChild("base", ops);
            Assert.IsNotNull(val);
            val.WaitHandle.WaitOne();
            Assert.IsFalse(val.IsError);
            Assert.IsFalse(val.IsUnknown);

            // The A class has a Prop property, value is 1, but must return 2 becasue it is overriden

            prop = val.GetChild("Prop", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("2", prop.Value);

            prop = val.GetChild("PropNoVirt1", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("1", prop.Value);

            prop = val.GetChild("PropNoVirt2", ops);
            Assert.IsNotNull(prop);
            Assert.AreEqual("1", prop.Value);
        }
Esempio n. 2
0
        public static ObjectValue GetChildSync(this ObjectValue val, string name, EvaluationOptions ops)
        {
            var result = val.GetChild(name, ops);

            return(result != null?result.Sync() : null);
        }