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
- InvalidDataException.cs
- ListBoxAutomationPeer.cs
- ConfigurationValues.cs
- EventLogEntry.cs
- ProviderConnectionPoint.cs
- BamlBinaryReader.cs
- VisualTreeHelper.cs
- DataGridViewCellStyleEditor.cs
- RuntimeConfigLKG.cs
- TraceListener.cs
- LocalBuilder.cs
- StructuredType.cs
- CrossContextChannel.cs
- Sql8ExpressionRewriter.cs
- CollectionType.cs
- HttpFileCollection.cs
- AttributeUsageAttribute.cs
- ValueChangedEventManager.cs
- ThemeConfigurationDialog.cs
- SecurityManager.cs
- CharKeyFrameCollection.cs
- CreateParams.cs
- LineVisual.cs
- ApplicationServicesHostFactory.cs
- LowerCaseStringConverter.cs
- MetaTable.cs
- FocusChangedEventArgs.cs
- PeerToPeerException.cs
- Size.cs
- InputLanguageCollection.cs
- StylusPointPropertyUnit.cs
- Wizard.cs
- Helpers.cs
- LineSegment.cs
- XmlSchemaImport.cs
- PolicyUnit.cs
- EncryptedKeyIdentifierClause.cs
- TemplateColumn.cs
- NamespaceInfo.cs
- RegionIterator.cs
- Error.cs
- webproxy.cs
- Solver.cs
- DependencyPropertyConverter.cs
- HttpRuntime.cs
- BezierSegment.cs
- Itemizer.cs
- Property.cs
- SchemaImporter.cs
- MatrixCamera.cs
- TableRowGroup.cs
- RsaSecurityTokenAuthenticator.cs
- FormattedText.cs
- Internal.cs
- CapacityStreamGeometryContext.cs
- SmiContext.cs
- FileUpload.cs
- FormsAuthenticationTicket.cs
- StrongNameKeyPair.cs
- ColumnClickEvent.cs
- EnterpriseServicesHelper.cs
- MessagePropertyDescriptionCollection.cs
- DynamicFilterExpression.cs
- ServiceMetadataExtension.cs
- VsPropertyGrid.cs
- SafeFileMappingHandle.cs
- DisplayInformation.cs
- HtmlControlPersistable.cs
- PointCollectionValueSerializer.cs
- InteropExecutor.cs
- HexParser.cs
- NumericUpDown.cs
- InputReport.cs
- DbTypeMap.cs
- WebPartDeleteVerb.cs
- TableRowCollection.cs
- AssemblyNameProxy.cs
- NumberFormatInfo.cs
- VirtualDirectoryMapping.cs
- DataListItemEventArgs.cs
- RegexCode.cs
- MetafileHeader.cs
- BoundsDrawingContextWalker.cs
- VariableAction.cs
- externdll.cs
- clipboard.cs
- DrawingState.cs
- XamlStackWriter.cs
- CachedPathData.cs
- shaperfactoryquerycacheentry.cs
- EncryptedKeyIdentifierClause.cs
- DataColumnMappingCollection.cs
- WindowsIdentity.cs
- CompositeScriptReference.cs
- SevenBitStream.cs
- DecimalAverageAggregationOperator.cs
- UInt16Converter.cs
- XmlDomTextWriter.cs
- ConfigurationSchemaErrors.cs
- ScalarConstant.cs