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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlInternalConnectionTds.cs
- DataGridColumn.cs
- MobileCategoryAttribute.cs
- RtType.cs
- ToolTip.cs
- ToolStripItemTextRenderEventArgs.cs
- CallbackValidator.cs
- MetadataSource.cs
- SessionEndedEventArgs.cs
- WebControl.cs
- DBDataPermission.cs
- GlyphsSerializer.cs
- RegionInfo.cs
- SchemaDeclBase.cs
- UserNameSecurityTokenParameters.cs
- HelpInfo.cs
- PagesChangedEventArgs.cs
- MetadataCache.cs
- SqlError.cs
- PathParser.cs
- ComplexLine.cs
- Mouse.cs
- AttachedProperty.cs
- VBIdentifierTrimConverter.cs
- AuthorizationRule.cs
- DataListItemCollection.cs
- followingsibling.cs
- WmlCalendarAdapter.cs
- sortedlist.cs
- FontCollection.cs
- MethodRental.cs
- DebugHandleTracker.cs
- ErrorLog.cs
- PKCS1MaskGenerationMethod.cs
- ReaderContextStackData.cs
- MachineKeySection.cs
- HttpHandlerActionCollection.cs
- ResourceFallbackManager.cs
- DataGridState.cs
- Rotation3DAnimation.cs
- NumberSubstitution.cs
- ObjRef.cs
- AsmxEndpointPickerExtension.cs
- IndentTextWriter.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- SynchronizationContext.cs
- SqlTriggerContext.cs
- OdbcCommand.cs
- EncodingNLS.cs
- MapPathBasedVirtualPathProvider.cs
- AssociatedControlConverter.cs
- Literal.cs
- OperationCanceledException.cs
- SerTrace.cs
- BooleanConverter.cs
- SelectorItemAutomationPeer.cs
- SetterBase.cs
- ListBindableAttribute.cs
- Type.cs
- AssemblyAttributesGoHere.cs
- StrongNameMembershipCondition.cs
- UniqueSet.cs
- DataListItem.cs
- InheritanceAttribute.cs
- TextElementAutomationPeer.cs
- WindowsFormsHostPropertyMap.cs
- SmiGettersStream.cs
- SpStreamWrapper.cs
- DiagnosticTrace.cs
- DesignerUtility.cs
- SqlColumnizer.cs
- ObjectListFieldCollection.cs
- AutoGeneratedFieldProperties.cs
- SingleObjectCollection.cs
- TextureBrush.cs
- Menu.cs
- EnterpriseServicesHelper.cs
- MultipartContentParser.cs
- OleServicesContext.cs
- NullableBoolConverter.cs
- ClaimComparer.cs
- oledbmetadatacollectionnames.cs
- LogFlushAsyncResult.cs
- OracleBFile.cs
- MarkerProperties.cs
- CollectionViewGroupRoot.cs
- AnimationStorage.cs
- UrlAuthorizationModule.cs
- GradientBrush.cs
- StoreItemCollection.cs
- AxisAngleRotation3D.cs
- DataObjectMethodAttribute.cs
- UserControlCodeDomTreeGenerator.cs
- CrossSiteScriptingValidation.cs
- EnumMember.cs
- ManualResetEvent.cs
- PrivacyNoticeBindingElementImporter.cs
- ButtonFieldBase.cs
- PolicyManager.cs
- SchemaImporterExtensionsSection.cs