public ChainedObjectSourceProxy(object source, PathToken token, INodeProxyFactory factory) : base(source)
 {
     this.factory = factory;
     count        = token.Path.Count;
     proxies      = new ProxyEntry[count];
     Bind(source, token);
 }
        public virtual void Unregister(INodeProxyFactory factory)
        {
            if (factory == null)
            {
                return;
            }

            this.factories.RemoveAll(pair => pair.factory == factory);
        }
        public virtual void Register(INodeProxyFactory factory, int priority = 100)
        {
            if (factory == null)
            {
                return;
            }

            this.factories.Add(new PriorityFactoryPair(factory, priority));
            this.factories.Sort((x, y) => y.priority.CompareTo(x.priority));
        }
 public PriorityFactoryPair(INodeProxyFactory factory, int priority)
 {
     this.factory  = factory;
     this.priority = priority;
 }