public override PropertyTreeMetaObject Process(PropertyTreeBinderImpl parent, PropertyTreeMetaObject target, PropertyTreeNavigator self, NodeList children) { Predicate <PropertyTreeNavigator> predicate = ImplicitDirective(target, "source"); var node = children.FindAndRemove(predicate).FirstOrDefault(); if (node != null) { IServiceProvider serviceProvider = parent.GetBasicServices(node); var uriContext = node as IUriContext; TargetSourceDirective ss; ss = parent.DirectiveFactory.CreateTargetSource(node, uriContext); if (ss != null) { try { target = target.BindStreamingSource(ss, serviceProvider); } catch (PropertyTreeException) { throw; } catch (Exception ex) { if (ex.IsCriticalException()) { throw; } parent._errors.FailedToLoadFromSource(ss.Uri, ex, node.FileLocation); } } } return(target); }
public override PropertyTreeMetaObject StartStep(PropertyTreeMetaObject target, PropertyTreeNavigator self, NodeList children) { Predicate<PropertyTreeNavigator> predicate = ImplicitDirective(target, "source"); var node = children.FindAndRemove(predicate).FirstOrDefault(); if (node != null) { IServiceProvider serviceProvider = Parent.GetBasicServices(node); var uriContext = node as IUriContext; TargetSourceDirective ss; ss = this.DirectiveFactory.CreateTargetSource(node, uriContext); if (ss != null) { try { target = target.BindStreamingSource(ss, serviceProvider); } catch (Exception ex) { if (ex.IsCriticalException()) throw; Parent.errors.FailedToLoadFromSource(ss.Uri, ex, node.FileLocation); } } } return target; }