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); }
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); }