public void GetMemberInfo_InheritedMember_ReturnsInheritingClassType()
        {
            var       instance = new ClassChild1();
            const int number   = 10;

            var info = (PropertyInfo)MemberExpressions.GetMemberInfo <ClassChild1>(c => c.Property1);

            Assert.AreEqual(typeof(ClassChild1), info.ReflectedType);
            info.SetValue(instance, number, null);
            Assert.AreEqual(number, instance.Property1);
        }
Esempio n. 2
0
        public void InheritedProperty_ParentIsForChildren()
        {
            const int number = 1;
            var       child1 = new ClassChild1();
            var       child2 = new ClassChild2();

            var parentProperty       = typeof(ClassParent).GetProperty("Property1");
            var parentPropertyMember = BuilderUtils.GetMemberSetter <object, object>(parentProperty, (o, b, s) => number, true);
            var child1Property       = typeof(ClassChild1).GetProperty("Property1");
            var child2Property       = typeof(ClassChild2).GetProperty("Property1");

            Assert.IsTrue(parentPropertyMember.IsForMember(child1Property, null, null));
            Assert.IsTrue(parentPropertyMember.IsForMember(child2Property, null, null));

            parentPropertyMember.Set(child1, null, null);
            Assert.AreEqual(number, child1.Property1);

            parentPropertyMember.Set(child2, null, null);
            Assert.AreEqual(number, child2.Property1);
        }