Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / MonikerUtility.cs / 1 / MonikerUtility.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.Collections.Generic; using System.Threading; using System.Text; internal static class MonikerUtility { internal static string Getkeyword (string moniker, out MonikerHelper.MonikerAttribute keyword) { moniker = moniker.TrimStart (); int indexOfEqualSign = moniker.IndexOf("=", StringComparison.Ordinal); if (indexOfEqualSign == -1) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(SR.GetString(SR.NoEqualSignFound, moniker))); int indexOfComma= moniker.IndexOf(",", StringComparison.Ordinal); if(indexOfComma != -1 && indexOfComma < indexOfEqualSign) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(SR.GetString(SR.NoEqualSignFound, moniker))); string suspectedKeyword = moniker.Substring (0, indexOfEqualSign).Trim(); suspectedKeyword = suspectedKeyword.ToLower (System.Globalization.CultureInfo.InvariantCulture); foreach (MonikerHelper.KeywordInfo keywordInfo in MonikerHelper.KeywordInfo.KeywordCollection) { if (suspectedKeyword == keywordInfo.Name ) { keyword = keywordInfo.Attrib; moniker = moniker.Substring (indexOfEqualSign + 1).TrimStart(); return moniker; } } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString (SR.UnknownMonikerKeyword, suspectedKeyword))); } internal static string GetValue (string moniker, out string val) { StringBuilder value = new StringBuilder (); int index = 0; moniker = moniker.Trim (); if(string.IsNullOrEmpty(moniker)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString(SR.KewordMissingValue))); switch (moniker[index] ) { case '"': case '\'': { char quoteToCompare = moniker [index]; index++; for (;index < moniker.Length ; index++) { if (moniker[index] == quoteToCompare) { if ((index < (moniker.Length - 1)) && (moniker[index+1] == quoteToCompare)) { value.Append (quoteToCompare ); index++; } else { break; } } else value.Append (moniker [index]); } if (index < moniker.Length ) { index++; if (index < moniker.Length ) { moniker = moniker.Substring (index); moniker = moniker.Trim(); if (!String.IsNullOrEmpty(moniker)) { if (moniker[0] == ',') { moniker = moniker.Substring (1); moniker = moniker.Trim (); } else throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString (SR.BadlyTerminatedValue, value.ToString()))); } } else moniker = ""; } else throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString(SR.MissingQuote ,value.ToString()))); break; } default: { for (; (index < moniker.Length ) && (moniker[index] != ','); index++) value.Append (moniker[index]); if (index < moniker.Length ) { index++; if (index < moniker.Length ) { moniker = moniker.Substring (index); moniker = moniker.Trim(); } } else moniker = ""; break; } } val = value.ToString().Trim (); return moniker; } internal static void Parse (string displayName, ref DictionarypropertyTable) { int indexOfMonikerData = displayName.IndexOf(":", StringComparison.Ordinal); if (indexOfMonikerData == -1) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString (SR.MonikerMissingColon))); string monikerParams = displayName.Substring (indexOfMonikerData + 1).Trim(); MonikerHelper.MonikerAttribute keyword ; string value; while (!string.IsNullOrEmpty(monikerParams)) { monikerParams = Getkeyword (monikerParams, out keyword); propertyTable.TryGetValue (keyword, out value); if (!String.IsNullOrEmpty(value)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError (new MonikerSyntaxException (SR.GetString (SR.RepeatedKeyword))); monikerParams = GetValue (monikerParams, out value); propertyTable [keyword] = 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
- SmiRecordBuffer.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- ConfigXmlWhitespace.cs
- Effect.cs
- FormatVersion.cs
- SubqueryRules.cs
- StateMachine.cs
- DataGridViewCellEventArgs.cs
- SqlClientPermission.cs
- EditorPart.cs
- OpCodes.cs
- XPathNode.cs
- MemoryRecordBuffer.cs
- StylusOverProperty.cs
- InfoCardProofToken.cs
- TextCollapsingProperties.cs
- HtmlProps.cs
- EmbossBitmapEffect.cs
- Tablet.cs
- Win32MouseDevice.cs
- MultipartIdentifier.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- InplaceBitmapMetadataWriter.cs
- Wildcard.cs
- TagPrefixAttribute.cs
- IndexedString.cs
- XmlSchemaSimpleContentExtension.cs
- FixedHyperLink.cs
- FixedTextContainer.cs
- LineMetrics.cs
- CompiledQueryCacheKey.cs
- SystemSounds.cs
- HttpListener.cs
- StylusPointCollection.cs
- XPathExpr.cs
- Timeline.cs
- SchemaImporter.cs
- HttpValueCollection.cs
- AutomationIdentifierGuids.cs
- SettingsBindableAttribute.cs
- HtmlTernaryTree.cs
- WindowsTokenRoleProvider.cs
- DesignerLabelAdapter.cs
- SecurityContextSecurityTokenAuthenticator.cs
- ITextView.cs
- XsdDuration.cs
- NativeObjectSecurity.cs
- ItemCollection.cs
- XsdValidatingReader.cs
- PassportIdentity.cs
- Type.cs
- COM2PropertyDescriptor.cs
- SerialReceived.cs
- Keywords.cs
- CustomSignedXml.cs
- IdleTimeoutMonitor.cs
- MutexSecurity.cs
- SmtpNegotiateAuthenticationModule.cs
- WebRequestModuleElementCollection.cs
- InitialServerConnectionReader.cs
- GeometryModel3D.cs
- ScrollBar.cs
- CorrelationService.cs
- WorkflowDesignerColors.cs
- SingleObjectCollection.cs
- coordinatorscratchpad.cs
- InheritanceContextHelper.cs
- DateTimeParse.cs
- XmlProcessingInstruction.cs
- ConnectorDragDropGlyph.cs
- basevalidator.cs
- WebPartAuthorizationEventArgs.cs
- DataServiceException.cs
- CatchBlock.cs
- Int64Converter.cs
- Overlapped.cs
- TransmissionStrategy.cs
- EntityType.cs
- Application.cs
- HelloMessageApril2005.cs
- Int16.cs
- BindStream.cs
- PrintPreviewGraphics.cs
- _ConnectStream.cs
- DataGridTextBoxColumn.cs
- ProgressBarBrushConverter.cs
- SqlUDTStorage.cs
- XmlSchemaImport.cs
- StringConverter.cs
- ClockController.cs
- Message.cs
- UseManagedPresentationBindingElement.cs
- HttpResponseHeader.cs
- FixedPageAutomationPeer.cs
- ConnectionPointCookie.cs
- MenuItemStyleCollection.cs
- CodeTypeReference.cs
- PeerNameRecordCollection.cs
- WebScriptEndpoint.cs
- AssemblyBuilder.cs