Exemplo n.º 1
0
        /// <summary>
        /// Creates a BindingElement instance
        /// </summary>
        /// <param name="transport">The trasport of this binding element.</param>
        /// <param name="extraBindings">The other elements for ths binding.</param>
        protected Binding(TransportBindingElement transport, params BindingElement[] extraBindings)
        {
            this.Transport = transport;

            BindingElement prev = null;

            if (extraBindings != null)
            {
                int len = extraBindings.Length;

                if (len > 0)
                {
                    prev = null;

                    for (int i = len - 1; i >= 0; i--)
                    {
                        BindingElement next = extraBindings[i];

                        if (prev == null)
                        {
                            this.Elements = next;
                        }
                        else
                        {
                            prev.SetNext(next);
                        }

                        prev = next;

                        if (next is MessageEncodingBindingElement)
                        {
                            this.Encoding = (MessageEncodingBindingElement)next;
                        }
                    }
                }
            }

            if (prev == null)
            {
                this.Encoding = new TextMessageEncodingBindingElement();
                this.Elements = this.Encoding;
                this.Elements.SetNext(this.Transport);
            }
            else if (this.Encoding == null)
            {
                this.Encoding = new TextMessageEncodingBindingElement();
                prev.SetNext(this.Encoding);
                this.Encoding.SetNext(this.Transport);
            }
            else
            {
                prev.SetNext(this.Transport);
            }
        }
 /// <summary>
 ///  Chains a BindingElement to another one
 /// </summary>
 /// <param name="Next">The BindingElement to cascade to this one.</param>
 public void SetNext(BindingElement Next)
 {
     m_Next = Next;
 }
Exemplo n.º 3
0
        /// <summary>
        /// Creates a BindingElement instance
        /// </summary>
        /// <param name="transport">The trasport of this binding element.</param>
        /// <param name="extraBindings">The other elements for ths binding.</param>
        protected Binding( TransportBindingElement transport, params BindingElement[] extraBindings )
        {
            this.Transport = transport;
            
            BindingElement prev = null;

            if(extraBindings != null)
            {
                int len = extraBindings.Length;

                if(len > 0)
                {
                    prev = null;
                    
                    for(int i=len-1; i>=0; i--)
                    {
                        BindingElement next = extraBindings[i];

                        if (prev == null)
                        {
                            this.Elements = next;
                        }
                        else
                        {
                            prev.SetNext(next);
                        }

                        prev = next;

                        if(next is MessageEncodingBindingElement)
                        {
                            this.Encoding = (MessageEncodingBindingElement)next;
                        }
                    }
                }
            }

            if (prev == null)
            {
                this.Encoding = new TextMessageEncodingBindingElement();
                this.Elements = this.Encoding;
                this.Elements.SetNext(this.Transport);
            }
            else if(this.Encoding == null)
            {
                this.Encoding = new TextMessageEncodingBindingElement();
                prev.SetNext(this.Encoding);
                this.Encoding.SetNext(this.Transport);
            }
            else
            {
                prev.SetNext(this.Transport);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 ///  Chains a BindingElement to another one
 /// </summary>
 /// <param name="Next">The BindingElement to cascade to this one.</param>
 public void SetNext(BindingElement Next)
 {
     m_Next = Next;
 }