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
- RSAPKCS1KeyExchangeDeformatter.cs
- TextParaClient.cs
- XmlSchemas.cs
- ResourcePermissionBaseEntry.cs
- PathGradientBrush.cs
- FlagPanel.cs
- ArrangedElementCollection.cs
- NumericUpDownAccelerationCollection.cs
- Substitution.cs
- Helpers.cs
- ObjectFullSpanRewriter.cs
- TreeViewItemAutomationPeer.cs
- ToolboxService.cs
- ModelUIElement3D.cs
- Registration.cs
- DBConnection.cs
- XmlParserContext.cs
- HtmlUtf8RawTextWriter.cs
- ElapsedEventArgs.cs
- XmlSchemaSequence.cs
- Content.cs
- ECDiffieHellmanCng.cs
- ScrollChrome.cs
- XmlSchemaGroup.cs
- CodeIdentifiers.cs
- ObjectItemLoadingSessionData.cs
- VariableQuery.cs
- AdornerLayer.cs
- HttpServerChannel.cs
- ManagementBaseObject.cs
- xmlfixedPageInfo.cs
- ToolStripScrollButton.cs
- DataBindingCollectionEditor.cs
- HMAC.cs
- Authorization.cs
- XmlSchemaComplexContentExtension.cs
- NumberSubstitution.cs
- Viewport2DVisual3D.cs
- OdbcEnvironment.cs
- CodeNamespace.cs
- WebScriptMetadataMessageEncoderFactory.cs
- SortQuery.cs
- OdbcParameter.cs
- AppSettingsReader.cs
- XamlReaderHelper.cs
- SubpageParagraph.cs
- NavigationWindowAutomationPeer.cs
- SettingsPropertyCollection.cs
- DataGridViewTopLeftHeaderCell.cs
- SoapObjectInfo.cs
- FilterableAttribute.cs
- AutomationIdentifier.cs
- AvTraceFormat.cs
- OrCondition.cs
- ContainerAction.cs
- TextElement.cs
- mediapermission.cs
- GlyphInfoList.cs
- StylusPointCollection.cs
- PictureBox.cs
- DocumentPageTextView.cs
- sapiproxy.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- XmlDomTextWriter.cs
- ValidationError.cs
- HitTestResult.cs
- DesignerTransactionCloseEvent.cs
- ListViewCancelEventArgs.cs
- FileSystemWatcher.cs
- HandleCollector.cs
- AttachedAnnotationChangedEventArgs.cs
- ManagementInstaller.cs
- X509CertificateRecipientServiceCredential.cs
- ping.cs
- SoapIgnoreAttribute.cs
- CodeGotoStatement.cs
- ScaleTransform.cs
- TextTreePropertyUndoUnit.cs
- base64Transforms.cs
- FileNameEditor.cs
- SerializerProvider.cs
- TargetInvocationException.cs
- dataprotectionpermissionattribute.cs
- CheckBoxBaseAdapter.cs
- TextHidden.cs
- NameValuePair.cs
- StorageComplexTypeMapping.cs
- SoapElementAttribute.cs
- DashStyle.cs
- MatrixTransform3D.cs
- FunctionParameter.cs
- XmlObjectSerializerReadContextComplexJson.cs
- WindowInteropHelper.cs
- SplitterEvent.cs
- ListViewAutomationPeer.cs
- HtmlTableRow.cs
- NativeMethods.cs
- RectValueSerializer.cs
- XamlParser.cs
- BitmapMetadataBlob.cs