public void TryGetMember_is_false_when_it_is_different_return_type()
        {
            dynamic subject = new { a = "hello" };
            var     pp      = new DynamicPropertyProvider(subject);

            Assert.False(pp.TryGetProperty("a", typeof(int), out _));
        }
        public void Can_get_property_for_subtypes()
        {
            var properties = new DynamicPropertyProvider();
            properties.Add(DynamicProperty.For<Person>("Test", p => 0));

            DynamicProperty property;
            Assert.True(properties.TryGetProperty(typeof(Employee), "Test", out property));
        }
        public void TryGetMember_is_true_when_it_can_bind(dynamic subject)
        {
            var    pp = new DynamicPropertyProvider(subject);
            object actual;

            Assert.True(pp.TryGetProperty("a", typeof(object), out actual));
            Assert.Equal("hello", actual);
        }
示例#4
0
        public static IWrapper Create(object value, DynamicPropertyProvider properties)
        {
            if (object.ReferenceEquals(null, value)) return null;

            if (value is IWrapper)
            {
                return value as IWrapper;
            }
            else
            {
                return (IWrapper)Activator.CreateInstance(
                    typeof(Wrapper<>).MakeGenericType(value.GetType()),
                    value,
                    properties
                );
            }
        }
        public void TryGetMember_is_false_when_it_cannot_bind(dynamic subject)
        {
            var pp = new DynamicPropertyProvider(subject);

            Assert.False(pp.TryGetProperty("missing", typeof(object), out _));
        }
        public void GetPropertyType_is_correct_Type(dynamic subject)
        {
            var pp = new DynamicPropertyProvider(subject);

            Assert.Equal(typeof(string), pp.GetPropertyType("a"));
        }