Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / XmlAttributeHolder.cs / 1 / XmlAttributeHolder.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel { using System.Xml; struct XmlAttributeHolder { string prefix; string ns; string localName; string value; public static XmlAttributeHolder[] emptyArray = new XmlAttributeHolder[0]; public XmlAttributeHolder(string prefix, string localName, string ns, string value) { this.prefix = prefix; this.localName = localName; this.ns = ns; this.value = value; } public string Prefix { get { return prefix; } } public string NamespaceUri { get { return ns; } } public string LocalName { get { return localName; } } public string Value { get { return value; } } public void WriteTo(XmlWriter writer) { writer.WriteStartAttribute(prefix, localName, ns); writer.WriteString(value); writer.WriteEndAttribute(); } public static void WriteAttributes(XmlAttributeHolder[] attributes, XmlWriter writer) { for (int i = 0; i < attributes.Length; i++) attributes[i].WriteTo(writer); } public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader) { int maxSizeOfHeaders = int.MaxValue; return ReadAttributes(reader, ref maxSizeOfHeaders); } public static XmlAttributeHolder[] ReadAttributes(XmlDictionaryReader reader, ref int maxSizeOfHeaders) { if (reader.AttributeCount == 0) return emptyArray; XmlAttributeHolder[] attributes = new XmlAttributeHolder[reader.AttributeCount]; reader.MoveToFirstAttribute(); for (int i = 0; i < attributes.Length; i++) { string ns = reader.NamespaceURI; string localName = reader.LocalName; string prefix = reader.Prefix; string value = string.Empty; while (reader.ReadAttributeValue()) { if (value.Length == 0) value = reader.Value; else value += reader.Value; } Deduct(prefix, ref maxSizeOfHeaders); Deduct(localName, ref maxSizeOfHeaders); Deduct(ns, ref maxSizeOfHeaders); Deduct(value, ref maxSizeOfHeaders); attributes[i] = new XmlAttributeHolder(prefix, localName, ns, value); reader.MoveToNextAttribute(); } reader.MoveToElement(); return attributes; } static void Deduct(string s, ref int maxSizeOfHeaders) { int byteCount = s.Length * sizeof(char); if (byteCount > maxSizeOfHeaders) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.XmlBufferQuotaExceeded))); } maxSizeOfHeaders -= byteCount; } public static string GetAttribute(XmlAttributeHolder[] attributes, string localName, string ns) { for (int i = 0; i < attributes.Length; i++) if (attributes[i].LocalName == localName && attributes[i].NamespaceUri == ns) return attributes[i].Value; return null; } } } // 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
- InternalDuplexChannelFactory.cs
- EncoderExceptionFallback.cs
- CharacterHit.cs
- PipelineComponent.cs
- DbConnectionPoolOptions.cs
- Transform.cs
- WebRequestModulesSection.cs
- RijndaelManaged.cs
- ByteStack.cs
- OleDbException.cs
- Italic.cs
- TypeGenericEnumerableViewSchema.cs
- DocumentPageViewAutomationPeer.cs
- EntityDataSourceSelectedEventArgs.cs
- DbXmlEnabledProviderManifest.cs
- CacheChildrenQuery.cs
- DataConnectionHelper.cs
- Int32Collection.cs
- DebugControllerThread.cs
- BinaryKeyIdentifierClause.cs
- CqlErrorHelper.cs
- KeyValuePairs.cs
- ListViewDeleteEventArgs.cs
- SecurityPermission.cs
- DecoderFallbackWithFailureFlag.cs
- NavigationWindow.cs
- CodeLinePragma.cs
- DBConnection.cs
- PeerInvitationResponse.cs
- WebSysDescriptionAttribute.cs
- TdsParserSessionPool.cs
- BitmapCacheBrush.cs
- ObfuscateAssemblyAttribute.cs
- KeyboardNavigation.cs
- PtsHelper.cs
- ComplexTypeEmitter.cs
- _DigestClient.cs
- ProvidePropertyAttribute.cs
- SQLInt16.cs
- complextypematerializer.cs
- HeaderLabel.cs
- TextShapeableCharacters.cs
- SessionViewState.cs
- BinaryParser.cs
- SafeFindHandle.cs
- RegistryKey.cs
- LeafCellTreeNode.cs
- CleanUpVirtualizedItemEventArgs.cs
- rsa.cs
- DataGridViewTextBoxCell.cs
- ChannelRequirements.cs
- DocumentViewerConstants.cs
- SqlDependency.cs
- FullTextLine.cs
- QueryComponents.cs
- FontUnitConverter.cs
- WebPartTransformer.cs
- TemplateModeChangedEventArgs.cs
- StringComparer.cs
- ErrorsHelper.cs
- VisualProxy.cs
- HttpApplicationFactory.cs
- MimeReturn.cs
- StrongBox.cs
- ContextConfiguration.cs
- CustomBindingElement.cs
- HandleRef.cs
- Stack.cs
- Image.cs
- HtmlLink.cs
- MetadataExporter.cs
- BamlLocalizableResourceKey.cs
- DataObjectAttribute.cs
- RowCache.cs
- MulticastOption.cs
- TreeViewItem.cs
- HideDisabledControlAdapter.cs
- CookieHandler.cs
- TaskFormBase.cs
- Message.cs
- ControlParameter.cs
- MemberNameValidator.cs
- ByteAnimationBase.cs
- ScriptIgnoreAttribute.cs
- SimpleApplicationHost.cs
- Color.cs
- RowsCopiedEventArgs.cs
- ExtensionDataObject.cs
- FileUpload.cs
- ConfigurationLoaderException.cs
- PolicyStatement.cs
- ModuleConfigurationInfo.cs
- SkinBuilder.cs
- RemoteAsymmetricSignatureFormatter.cs
- MessageQueue.cs
- SystemUnicastIPAddressInformation.cs
- ToolStripItemRenderEventArgs.cs
- SecurityDescriptor.cs
- EntityDataSourceContextCreatingEventArgs.cs
- BrowserCapabilitiesCompiler.cs