public object Bind(Type componentType, PropertyTreeBinderOptions options)
        {
            if (componentType == null)
            {
                throw new ArgumentNullException("componentType");
            }

            var obj = PropertyTreeMetaObject.Create(componentType);

            return(TopLevelBind(obj, options, null).Component);
        }
        public void ImplicitDirective_should_not_try_indexer_properties()
        {
            var props  = new C();
            var target = PropertyTreeMetaObject.Create(props);

            PropertyTreeBinderImpl.ImplicitDirective(target, "source");

            string text;

            Assert.False(props._values.TryGetValue("source", out text));
        }
        public T Bind <T>(T component, PropertyTreeBinderOptions options)
        {
            PropertyTreeMetaObject obj;

            if (ReferenceEquals(component, null))
            {
                obj = PropertyTreeMetaObject.Create(typeof(T));
            }
            else
            {
                obj = PropertyTreeMetaObject.Create(component);
            }

            return((T)TopLevelBind(obj, options, null).Component);
        }
            public override PropertyTreeMetaObject Process(PropertyTreeBinderImpl parent, PropertyTreeMetaObject target, PropertyTreeNavigator self, NodeList children)
            {
                foreach (var child in children.Rest())
                {
                    parent._errors.BindUnmatchedProperty(child.QualifiedName, target.ComponentType, child.FileLocation);
                }

                return(target);
            }
 internal PropertyTreeMetaObject TopLevelBind(PropertyTreeMetaObject obj, PropertyTreeBinderOptions options, IServiceProvider serviceProvider)
 {
     return(PropertyTreeMetaObjectBinder.Create(options).Bind(obj, this, serviceProvider));
 }