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
- TemplateParser.cs
- DataGridSortCommandEventArgs.cs
- _Events.cs
- Byte.cs
- KeyInfo.cs
- ToolStripTextBox.cs
- GenericTextProperties.cs
- TextBoxBase.cs
- SessionParameter.cs
- XsltOutput.cs
- DefaultClaimSet.cs
- PenContexts.cs
- ProfileParameter.cs
- LoginUtil.cs
- AsyncResult.cs
- IriParsingElement.cs
- ClearCollection.cs
- HoistedLocals.cs
- DependentList.cs
- BaseCodeDomTreeGenerator.cs
- MethodBuilder.cs
- sqlser.cs
- ButtonField.cs
- ListViewTableRow.cs
- Claim.cs
- TransactionProxy.cs
- MessageQueuePermissionEntry.cs
- CellCreator.cs
- ComponentRenameEvent.cs
- DataGridViewRowEventArgs.cs
- ResourceDisplayNameAttribute.cs
- AnnotationElement.cs
- CustomCategoryAttribute.cs
- SoapRpcServiceAttribute.cs
- SystemResources.cs
- StringBuilder.cs
- SendMailErrorEventArgs.cs
- WebPartDescriptionCollection.cs
- EDesignUtil.cs
- FixedTextSelectionProcessor.cs
- SymLanguageType.cs
- HuffmanTree.cs
- DataGridViewComboBoxColumn.cs
- BindingSource.cs
- CngKeyCreationParameters.cs
- WebPartEventArgs.cs
- StyleCollection.cs
- MultiSelectRootGridEntry.cs
- _WebProxyDataBuilder.cs
- GeneralTransform3D.cs
- DataGridAddNewRow.cs
- AcceleratedTokenAuthenticator.cs
- DispatcherHooks.cs
- RawStylusSystemGestureInputReport.cs
- TraceLog.cs
- GPStream.cs
- CqlParser.cs
- PerformanceCounterPermissionEntry.cs
- ZipIOLocalFileDataDescriptor.cs
- Shape.cs
- WindowsTokenRoleProvider.cs
- TypeDescriptionProvider.cs
- Drawing.cs
- GeometryHitTestParameters.cs
- ColumnHeader.cs
- IriParsingElement.cs
- AstNode.cs
- ChangeNode.cs
- OLEDB_Enum.cs
- CapacityStreamGeometryContext.cs
- MetadataHelper.cs
- ResourcePool.cs
- WebPartEditorOkVerb.cs
- QilValidationVisitor.cs
- SynchronizedMessageSource.cs
- ChtmlTextWriter.cs
- DeflateEmulationStream.cs
- FilteredSchemaElementLookUpTable.cs
- FocusTracker.cs
- TransformDescriptor.cs
- StyleXamlParser.cs
- HttpCacheParams.cs
- XmlSchemaInfo.cs
- Range.cs
- DurableOperationContext.cs
- Message.cs
- FileStream.cs
- IgnorePropertiesAttribute.cs
- ChtmlTextWriter.cs
- VisualStyleInformation.cs
- CollectionAdapters.cs
- SafeCryptContextHandle.cs
- IsolatedStorageFileStream.cs
- CompositionTarget.cs
- ByteKeyFrameCollection.cs
- CodeParameterDeclarationExpression.cs
- ListViewSelectEventArgs.cs
- GPPOINTF.cs
- PropertyNames.cs
- TimeManager.cs