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
- GifBitmapDecoder.cs
- WindowsAltTab.cs
- CachedTypeface.cs
- XmlAttributeOverrides.cs
- XPathEmptyIterator.cs
- ReflectPropertyDescriptor.cs
- IsolatedStorage.cs
- SystemNetworkInterface.cs
- CacheRequest.cs
- XmlEncodedRawTextWriter.cs
- Identity.cs
- BaseDataBoundControlDesigner.cs
- ItemsPanelTemplate.cs
- DesignSurfaceServiceContainer.cs
- HttpCapabilitiesBase.cs
- ViewKeyConstraint.cs
- IsolationInterop.cs
- GenericPrincipal.cs
- EastAsianLunisolarCalendar.cs
- LingerOption.cs
- ZoneMembershipCondition.cs
- HandlerBase.cs
- XmlSchemaAppInfo.cs
- FixedSOMPageElement.cs
- DefaultCommandConverter.cs
- TextTreeNode.cs
- ExpressionSelection.cs
- SchemaExporter.cs
- ResourceDescriptionAttribute.cs
- _IPv6Address.cs
- ExpressionBuilderCollection.cs
- CounterNameConverter.cs
- SqlDataSourceCommandEventArgs.cs
- GuidTagList.cs
- KeyTime.cs
- BooleanToVisibilityConverter.cs
- SqlConnectionString.cs
- IApplicationTrustManager.cs
- Form.cs
- FactoryMaker.cs
- OdbcConnectionString.cs
- MouseEvent.cs
- SchemaNotation.cs
- DiscoveryDocumentSearchPattern.cs
- LogSwitch.cs
- QilGenerator.cs
- DataBinding.cs
- HistoryEventArgs.cs
- ExpressionBindingCollection.cs
- TreeNodeCollection.cs
- Documentation.cs
- FileDialogCustomPlaces.cs
- CodeArrayCreateExpression.cs
- ServiceModelConfigurationElementCollection.cs
- DynamicMethod.cs
- MetadataUtilsSmi.cs
- _UriSyntax.cs
- ConfigurationLocationCollection.cs
- NativeActivityMetadata.cs
- XappLauncher.cs
- OptimizerPatterns.cs
- LayeredChannelFactory.cs
- DataContractSerializerSection.cs
- ParseChildrenAsPropertiesAttribute.cs
- AssociatedControlConverter.cs
- CompilerWrapper.cs
- SystemWebCachingSectionGroup.cs
- ServiceMetadataBehavior.cs
- BookmarkEventArgs.cs
- Fonts.cs
- SystemIPInterfaceStatistics.cs
- CustomAttributeFormatException.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ConfigurationErrorsException.cs
- ConsumerConnectionPointCollection.cs
- TypedTableBaseExtensions.cs
- QueryComponents.cs
- SafeNativeMethods.cs
- XPathConvert.cs
- MatrixUtil.cs
- CodeChecksumPragma.cs
- FontConverter.cs
- RectangleGeometry.cs
- StringBuilder.cs
- RecordsAffectedEventArgs.cs
- SqlUtils.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- XPathParser.cs
- StylusPointProperties.cs
- WarningException.cs
- SurrogateEncoder.cs
- EdmSchemaError.cs
- XmlSchemaException.cs
- ParsedAttributeCollection.cs
- Repeater.cs
- CultureInfoConverter.cs
- DiscoveryDocumentSerializer.cs
- SimpleApplicationHost.cs
- ActiveXHelper.cs
- WebDisplayNameAttribute.cs