UriTemplateLiteralQueryValue.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / UriTemplateLiteralQueryValue.cs / 2 / UriTemplateLiteralQueryValue.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System 
{
    using System.Collections.Specialized; 
    using System.ServiceModel.Web; 
    using System.Text;
    using System.Web; 
    using System.ServiceModel.Channels;

    // thin wrapper around string; use type system to help ensure we
    // are doing canonicalization right/consistently 
    class UriTemplateLiteralQueryValue : UriTemplateQueryValue, IComparable
    { 
        readonly string value; // an unescaped representation 

        UriTemplateLiteralQueryValue(string value) 
            : base(UriTemplatePartType.Literal)
        {
            Fx.Assert(value != null, "bad literal value");
            this.value = value; 
        }
        public static UriTemplateLiteralQueryValue CreateFromUriTemplate(string value) 
        { 
            return new UriTemplateLiteralQueryValue(UrlUtility.UrlDecode(value, Encoding.UTF8));
        } 

        public string AsEscapedString()
        {
            return UrlUtility.UrlEncode(this.value, Encoding.UTF8); 
        }
        public string AsRawUnescapedString() 
        { 
            return this.value;
        } 
        public override void Bind(string keyName, string[] values, ref int valueIndex, StringBuilder query)
        {
            query.AppendFormat("&{0}={1}", UrlUtility.UrlEncode(keyName, Encoding.UTF8), AsEscapedString());
        } 

        public int CompareTo(UriTemplateLiteralQueryValue other) 
        { 
            return string.Compare(this.value, other.value, StringComparison.Ordinal);
        } 

        public override bool Equals(object obj)
        {
            UriTemplateLiteralQueryValue lqv = obj as UriTemplateLiteralQueryValue; 
            if (lqv == null)
            { 
                Fx.Assert("why would we ever call this?"); 
                return false;
            } 
            else
            {
                return this.value == lqv.value;
            } 
        }
        public override int GetHashCode() 
        { 
            return this.value.GetHashCode();
        } 

        public override bool IsEquivalentTo(UriTemplateQueryValue other)
        {
            if (other == null) 
            {
                Fx.Assert("why would we ever call this?"); 
                return false; 
            }
            if (other.Nature != UriTemplatePartType.Literal) 
            {
                return false;
            }
            UriTemplateLiteralQueryValue otherAsLiteral = other as UriTemplateLiteralQueryValue; 
            Fx.Assert(otherAsLiteral != null, "The nature requires that this will be OK");
            return (CompareTo(otherAsLiteral) == 0); 
        } 
        public override void Lookup(string value, NameValueCollection boundParameters)
        { 
            Fx.Assert(string.Compare(this.value, value, StringComparison.Ordinal) == 0, "How can that be?");
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK