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
- FontSizeConverter.cs
- RangeValuePattern.cs
- InvokeWebServiceDesigner.cs
- BulletedList.cs
- ListBindingConverter.cs
- TypeUnloadedException.cs
- TypeReference.cs
- DebugController.cs
- ImageDesigner.cs
- XPathEmptyIterator.cs
- XXXOnTypeBuilderInstantiation.cs
- DbQueryCommandTree.cs
- OneOf.cs
- ToolStripDropDownClosingEventArgs.cs
- FocusChangedEventArgs.cs
- Directory.cs
- Rotation3DKeyFrameCollection.cs
- ScriptRef.cs
- SchemaElementLookUpTableEnumerator.cs
- JsonWriterDelegator.cs
- CompositeActivityValidator.cs
- ListenerConstants.cs
- HGlobalSafeHandle.cs
- CryptoKeySecurity.cs
- WSSecurityXXX2005.cs
- TypeUsage.cs
- FormsAuthenticationEventArgs.cs
- TableAutomationPeer.cs
- CategoryGridEntry.cs
- SamlAttribute.cs
- SystemShuttingDownException.cs
- CodeMethodInvokeExpression.cs
- CodeParameterDeclarationExpression.cs
- DefinitionProperties.cs
- SecureConversationServiceCredential.cs
- ListBase.cs
- WsrmTraceRecord.cs
- ToolStripDropDownClosingEventArgs.cs
- OneOfScalarConst.cs
- HtmlControlPersistable.cs
- XmlSchemaValidator.cs
- DataRowExtensions.cs
- ProtocolsSection.cs
- AsyncOperation.cs
- AppDomainFactory.cs
- WebPartEventArgs.cs
- MetadataPropertyCollection.cs
- TypeExtensionConverter.cs
- UIElement3DAutomationPeer.cs
- ValueConversionAttribute.cs
- DataControlField.cs
- ByteStorage.cs
- _CacheStreams.cs
- XmlTypeMapping.cs
- DelegateBodyWriter.cs
- ByteStream.cs
- ColumnMapTranslator.cs
- ToolStripPanel.cs
- DataGridViewSortCompareEventArgs.cs
- EncodedStreamFactory.cs
- XmlAttributeCache.cs
- PerformanceCounterPermission.cs
- MultilineStringConverter.cs
- QualificationDataItem.cs
- RetrieveVirtualItemEventArgs.cs
- BinaryNode.cs
- QuestionEventArgs.cs
- DebugInfoGenerator.cs
- EntityContainerEmitter.cs
- DoubleAnimationUsingPath.cs
- TextSpanModifier.cs
- UniqueID.cs
- ExpressionBindings.cs
- PersonalizationProviderHelper.cs
- TdsEnums.cs
- CheckedPointers.cs
- IChannel.cs
- ConfigXmlCDataSection.cs
- ProcessModuleDesigner.cs
- Panel.cs
- DbFunctionCommandTree.cs
- CodeExpressionCollection.cs
- MexHttpsBindingElement.cs
- MetadataCacheItem.cs
- StateDesigner.Helpers.cs
- X500Name.cs
- InvariantComparer.cs
- SynchronizedDispatch.cs
- TypeForwardedToAttribute.cs
- MediaTimeline.cs
- GcHandle.cs
- WorkflowViewStateService.cs
- HashCryptoHandle.cs
- SQLDouble.cs
- XmlValidatingReaderImpl.cs
- DecoderBestFitFallback.cs
- SmtpReplyReader.cs
- XamlReaderConstants.cs
- DataServiceQueryProvider.cs
- Decimal.cs