Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / UriTemplateQueryValue.cs / 2 / UriTemplateQueryValue.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System { using System.Collections.Specialized; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; using System.Web; using System.ServiceModel.Channels; // This represents a Query value, which can either be Empty, a Literal or a Variable abstract class UriTemplateQueryValue { readonly UriTemplatePartType nature; static UriTemplateQueryValue empty = new EmptyUriTemplateQueryValue(); protected UriTemplateQueryValue(UriTemplatePartType nature) { this.nature = nature; } public static UriTemplateQueryValue Empty { get { return UriTemplateQueryValue.empty; } } public UriTemplatePartType Nature { get { return this.nature; } } public static UriTemplateQueryValue CreateFromUriTemplate(string value, UriTemplate template) { // Checking for empty value if (value == null) { return UriTemplateQueryValue.Empty; } // Identifying the type of value - Literal|Compound|Variable switch (UriTemplateHelpers.IdentifyPartType(value)) { case UriTemplatePartType.Literal: return UriTemplateLiteralQueryValue.CreateFromUriTemplate(value); case UriTemplatePartType.Compound: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR2.GetString( SR2.UTQueryCannotHaveCompoundValue, template.originalTemplate))); case UriTemplatePartType.Variable: return new UriTemplateVariableQueryValue(template.AddQueryVariable(value.Substring(1, value.Length - 2))); default: Fx.Assert("Invalid value from IdentifyStringNature"); return null; } } public static bool IsNullOrEmpty(UriTemplateQueryValue utqv) { if (utqv == null) { return true; } if (utqv == UriTemplateQueryValue.Empty) { return true; } return false; } public abstract void Bind(string keyName, string[] values, ref int valueIndex, StringBuilder query); public abstract bool IsEquivalentTo(UriTemplateQueryValue other); public abstract void Lookup(string value, NameValueCollection boundParameters); class EmptyUriTemplateQueryValue : UriTemplateQueryValue { public EmptyUriTemplateQueryValue() : base(UriTemplatePartType.Literal) { } public override void Bind(string keyName, string[] values, ref int valueIndex, StringBuilder query) { query.AppendFormat("&{0}", UrlUtility.UrlEncode(keyName, Encoding.UTF8)); } public override bool IsEquivalentTo(UriTemplateQueryValue other) { return (other == UriTemplateQueryValue.Empty); } public override void Lookup(string value, NameValueCollection boundParameters) { Fx.Assert(string.IsNullOrEmpty(value), "shouldn't have a value"); } } } } // 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
- __Filters.cs
- _BaseOverlappedAsyncResult.cs
- XMLUtil.cs
- ChtmlTextWriter.cs
- TrackingAnnotationCollection.cs
- BindingList.cs
- WebPartZoneBase.cs
- GetUserPreferenceRequest.cs
- CriticalHandle.cs
- EntityContainerEmitter.cs
- MemoryFailPoint.cs
- GuidelineSet.cs
- MetadataItemEmitter.cs
- DataGridViewComboBoxColumn.cs
- ForceCopyBuildProvider.cs
- SignatureGenerator.cs
- BitmapEffectGroup.cs
- ControlPropertyNameConverter.cs
- FileChangesMonitor.cs
- KeyedCollection.cs
- CaseCqlBlock.cs
- Composition.cs
- DecoderBestFitFallback.cs
- ArgumentDesigner.xaml.cs
- WindowsButton.cs
- TypeName.cs
- Debugger.cs
- TableLayoutPanel.cs
- SchemaNames.cs
- BrowsableAttribute.cs
- WpfPayload.cs
- ListComponentEditorPage.cs
- XmlValueConverter.cs
- ListBindingHelper.cs
- ContentType.cs
- NotSupportedException.cs
- SqlConnectionPoolProviderInfo.cs
- StylusOverProperty.cs
- ObsoleteAttribute.cs
- MailDefinition.cs
- TreeViewDataItemAutomationPeer.cs
- CapiNative.cs
- DesignOnlyAttribute.cs
- MultiTrigger.cs
- MetadataWorkspace.cs
- RectValueSerializer.cs
- SemaphoreFullException.cs
- CheckBoxField.cs
- SecurityElement.cs
- FileSystemEventArgs.cs
- WebPartConnectionsCancelVerb.cs
- DispatcherFrame.cs
- Size.cs
- CompilerWrapper.cs
- GridLength.cs
- ImportOptions.cs
- TextServicesCompartment.cs
- Rethrow.cs
- SafeUserTokenHandle.cs
- ObjectRef.cs
- TextRange.cs
- TableLayout.cs
- ViewValidator.cs
- TemplateControlCodeDomTreeGenerator.cs
- LocationReferenceEnvironment.cs
- PackWebRequest.cs
- FormatSettings.cs
- SamlDoNotCacheCondition.cs
- SchemaReference.cs
- InputManager.cs
- TextRangeAdaptor.cs
- Win32MouseDevice.cs
- XPathSelfQuery.cs
- TcpServerChannel.cs
- QilVisitor.cs
- smtppermission.cs
- ConfigurationFileMap.cs
- TransportChannelFactory.cs
- PaginationProgressEventArgs.cs
- MenuItem.cs
- TypeToken.cs
- CodeDelegateCreateExpression.cs
- DBCommandBuilder.cs
- PrintDialog.cs
- EditableTreeList.cs
- SourceCollection.cs
- DefaultDiscoveryService.cs
- ViewCellSlot.cs
- WindowsBrush.cs
- SafeSecurityHelper.cs
- InstanceHandleReference.cs
- XmlDataSourceView.cs
- DesignDataSource.cs
- EntityConnectionStringBuilder.cs
- printdlgexmarshaler.cs
- MethodAccessException.cs
- NamespaceList.cs
- _TimerThread.cs
- ProcessModuleCollection.cs
- SchemaImporterExtensionElementCollection.cs