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
- LexicalChunk.cs
- SaveFileDialog.cs
- XmlDigitalSignatureProcessor.cs
- RepeatButtonAutomationPeer.cs
- TagElement.cs
- SubclassTypeValidatorAttribute.cs
- XmlRootAttribute.cs
- UInt16Converter.cs
- DataSpaceManager.cs
- DataSetUtil.cs
- SignedPkcs7.cs
- TableSectionStyle.cs
- _Events.cs
- PassportPrincipal.cs
- GetImportedCardRequest.cs
- SafeWaitHandle.cs
- PtsHelper.cs
- PageCatalogPart.cs
- MenuAutomationPeer.cs
- XmlImplementation.cs
- DefaultAutoFieldGenerator.cs
- WindowsIPAddress.cs
- TabletCollection.cs
- WebPartEditorApplyVerb.cs
- IntellisenseTextBox.designer.cs
- DbDataSourceEnumerator.cs
- DataGridState.cs
- HttpCacheParams.cs
- DataGridViewLinkColumn.cs
- AspNetSynchronizationContext.cs
- PixelFormat.cs
- XmlWriter.cs
- MailMessageEventArgs.cs
- TransformationRules.cs
- ModelUIElement3D.cs
- DPAPIProtectedConfigurationProvider.cs
- UnsafeNativeMethods.cs
- RuntimeConfig.cs
- UnicodeEncoding.cs
- TextEditor.cs
- X509Extension.cs
- PerformanceCounterManager.cs
- EventLogEntry.cs
- BitVector32.cs
- Camera.cs
- FieldNameLookup.cs
- SpeechDetectedEventArgs.cs
- SimpleTypesSurrogate.cs
- CompilationLock.cs
- ErrorFormatterPage.cs
- RequestCacheEntry.cs
- ManageRequest.cs
- CatalogPartCollection.cs
- WebFaultClientMessageInspector.cs
- DataMemberFieldConverter.cs
- SQLByte.cs
- RepeaterItem.cs
- TextSerializer.cs
- querybuilder.cs
- ClaimSet.cs
- bidPrivateBase.cs
- DiffuseMaterial.cs
- precedingsibling.cs
- BoundingRectTracker.cs
- Triangle.cs
- UpdatePanelControlTrigger.cs
- DrawingImage.cs
- SchemaCollectionCompiler.cs
- ProviderException.cs
- ApplicationSettingsBase.cs
- GC.cs
- RichTextBox.cs
- ObfuscateAssemblyAttribute.cs
- ErrorTableItemStyle.cs
- ComPlusTraceRecord.cs
- ChannelDispatcherBase.cs
- SqlDataSourceCustomCommandPanel.cs
- SqlVersion.cs
- EdmComplexPropertyAttribute.cs
- TableRow.cs
- SqlStatistics.cs
- Stack.cs
- PerformanceCounterManager.cs
- StateBag.cs
- ThreadAbortException.cs
- HwndTarget.cs
- IntPtr.cs
- TemplateControl.cs
- TextElementEditingBehaviorAttribute.cs
- SQLResource.cs
- AdapterUtil.cs
- BinaryCommonClasses.cs
- PhotoPrintingIntent.cs
- JapaneseLunisolarCalendar.cs
- DataGridViewAutoSizeModeEventArgs.cs
- EventEntry.cs
- XPathDescendantIterator.cs
- UInt32.cs
- ObjectQueryProvider.cs
- XhtmlBasicPageAdapter.cs