/// <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; }
/// <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); } }