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
- Token.cs
- BuildManager.cs
- WindowsEditBoxRange.cs
- SmiConnection.cs
- StorageRoot.cs
- NonDualMessageSecurityOverHttp.cs
- TimeSpanConverter.cs
- OutputCacheSection.cs
- RuntimeEnvironment.cs
- ProviderCommandInfoUtils.cs
- TerminatorSinks.cs
- XmlCharacterData.cs
- Point.cs
- DebugController.cs
- tooltip.cs
- SqlExpander.cs
- RuntimeArgumentHandle.cs
- EntityProviderFactory.cs
- RouteCollection.cs
- ActiveXMessageFormatter.cs
- TranslateTransform3D.cs
- CodeGeneratorAttribute.cs
- TypeBuilderInstantiation.cs
- FixedSOMTableRow.cs
- RequestCachePolicy.cs
- EpmSyndicationContentSerializer.cs
- CodeGenerator.cs
- DesignerVerb.cs
- SqlMetaData.cs
- ContainerActivationHelper.cs
- DesignerVerb.cs
- TypeLibraryHelper.cs
- relpropertyhelper.cs
- CipherData.cs
- ObjectSet.cs
- ConfigXmlReader.cs
- ConfigurationLocation.cs
- SponsorHelper.cs
- Marshal.cs
- ConnectionPoint.cs
- DataSetSchema.cs
- SignatureDescription.cs
- CodeTypeParameterCollection.cs
- NullToBooleanConverter.cs
- ExclusiveCanonicalizationTransform.cs
- ButtonRenderer.cs
- DbFunctionCommandTree.cs
- HttpListenerPrefixCollection.cs
- ClaimTypes.cs
- FocusTracker.cs
- CqlParser.cs
- CalendarTable.cs
- TagMapInfo.cs
- SocketAddress.cs
- NativeCppClassAttribute.cs
- DbProviderSpecificTypePropertyAttribute.cs
- Manipulation.cs
- SymbolTable.cs
- PropertyOverridesTypeEditor.cs
- RSAPKCS1KeyExchangeFormatter.cs
- OpenFileDialog.cs
- UpdatePanelTriggerCollection.cs
- Int32Storage.cs
- InlinedLocationReference.cs
- HttpHeaderCollection.cs
- FrameworkTemplate.cs
- TextEditorSpelling.cs
- ComponentChangingEvent.cs
- Code.cs
- StyleSheet.cs
- MdImport.cs
- unsafenativemethodstextservices.cs
- ProcessInfo.cs
- ObjectStateFormatter.cs
- HtmlInputCheckBox.cs
- ToolStripCollectionEditor.cs
- BitmapEffectOutputConnector.cs
- CommandBindingCollection.cs
- Popup.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- ISAPIWorkerRequest.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- ConnectorMovedEventArgs.cs
- View.cs
- UdpSocketReceiveManager.cs
- AssertFilter.cs
- HyperLinkField.cs
- WebPageTraceListener.cs
- PasswordValidationException.cs
- EmbeddedMailObject.cs
- SqlParameterCollection.cs
- EUCJPEncoding.cs
- XmlUtilWriter.cs
- ClientRolePrincipal.cs
- TextBreakpoint.cs
- TogglePattern.cs
- InputElement.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- PositiveTimeSpanValidatorAttribute.cs
- SapiRecognizer.cs