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
- NameSpaceExtractor.cs
- VBIdentifierNameEditor.cs
- GZipUtils.cs
- ValidatedControlConverter.cs
- ReadWriteObjectLock.cs
- HostedBindingBehavior.cs
- DbDataRecord.cs
- TrackingStringDictionary.cs
- WithStatement.cs
- KernelTypeValidation.cs
- ToolStripStatusLabel.cs
- CodeDOMProvider.cs
- TitleStyle.cs
- InputReferenceExpression.cs
- PropertyState.cs
- dsa.cs
- PrintEvent.cs
- PackageProperties.cs
- NativeMethods.cs
- EntityProxyTypeInfo.cs
- PolygonHotSpot.cs
- DoubleLink.cs
- QueryResponse.cs
- XmlSchemaAny.cs
- SpinWait.cs
- NativeMethods.cs
- MailWriter.cs
- BrowserCapabilitiesFactoryBase.cs
- CodeSnippetExpression.cs
- _Semaphore.cs
- SwitchCase.cs
- UIElement.cs
- HandlerElementCollection.cs
- SoapMessage.cs
- CompilationSection.cs
- DigitShape.cs
- CompilerTypeWithParams.cs
- httpapplicationstate.cs
- XamlWriter.cs
- PointF.cs
- Aggregates.cs
- EncoderExceptionFallback.cs
- RepeatInfo.cs
- NativeMethodsCLR.cs
- FaultContext.cs
- MessageSecurityTokenVersion.cs
- WindowsFormsHelpers.cs
- AmbientLight.cs
- SystemKeyConverter.cs
- CookieParameter.cs
- RolePrincipal.cs
- CodeGroup.cs
- PnrpPermission.cs
- MetaData.cs
- HttpListenerRequest.cs
- JoinTreeNode.cs
- Win32SafeHandles.cs
- VirtualDirectoryMapping.cs
- WebPartCollection.cs
- LicenseException.cs
- _StreamFramer.cs
- InvariantComparer.cs
- SqlBulkCopyColumnMapping.cs
- StackBuilderSink.cs
- XmlDocumentType.cs
- SmiMetaData.cs
- XmlAnyElementAttributes.cs
- XLinq.cs
- CanExecuteRoutedEventArgs.cs
- RSAPKCS1KeyExchangeFormatter.cs
- InstancePersistenceException.cs
- ColumnWidthChangedEvent.cs
- GraphicsState.cs
- NodeLabelEditEvent.cs
- MarkupCompilePass2.cs
- bidPrivateBase.cs
- StylusPoint.cs
- SplitContainer.cs
- IItemProperties.cs
- EtwProvider.cs
- RC2.cs
- TrustSection.cs
- DPTypeDescriptorContext.cs
- DocumentEventArgs.cs
- TreeNodeSelectionProcessor.cs
- MetadataFile.cs
- OperationSelectorBehavior.cs
- SettingsPropertyNotFoundException.cs
- JsonFormatGeneratorStatics.cs
- DataGridViewRowsRemovedEventArgs.cs
- SQLBoolean.cs
- fixedPageContentExtractor.cs
- Blend.cs
- SemaphoreSlim.cs
- RawUIStateInputReport.cs
- SiteMapNodeItemEventArgs.cs
- XsltArgumentList.cs
- RotateTransform.cs
- safePerfProviderHandle.cs
- _LocalDataStore.cs