Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / SecurityKeyIdentifier.cs / 1305376 / SecurityKeyIdentifier.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Collections; using System.Collections.Generic; using System.IO; using System.Globalization; public class SecurityKeyIdentifier : IEnumerable{ const int InitialSize = 2; readonly List clauses; bool isReadOnly; public SecurityKeyIdentifier() { this.clauses = new List (InitialSize); } public SecurityKeyIdentifier(params SecurityKeyIdentifierClause[] clauses) { if (clauses == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("clauses"); } this.clauses = new List (clauses.Length); for (int i = 0; i < clauses.Length; i++) { Add(clauses[i]); } } public SecurityKeyIdentifierClause this[int index] { get { return this.clauses[index]; } } public bool CanCreateKey { get { for (int i = 0; i < this.Count; i++) { if (this[i].CanCreateKey) { return true; } } return false; } } public int Count { get { return this.clauses.Count; } } public bool IsReadOnly { get { return this.isReadOnly; } } public void Add(SecurityKeyIdentifierClause clause) { if (this.isReadOnly) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); } if (clause == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("clause")); } this.clauses.Add(clause); } public SecurityKey CreateKey() { for (int i = 0; i < this.Count; i++) { if (this[i].CanCreateKey) { return this[i].CreateKey(); } } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.KeyIdentifierCannotCreateKey))); } public TClause Find () where TClause : SecurityKeyIdentifierClause { TClause clause; if (!TryFind (out clause)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.NoKeyIdentifierClauseFound, typeof(TClause)), "TClause")); } return clause; } public IEnumerator GetEnumerator() { return this.clauses.GetEnumerator(); } public void MakeReadOnly() { this.isReadOnly = true; } public override string ToString() { using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture)) { writer.WriteLine("SecurityKeyIdentifier"); writer.WriteLine(" ("); writer.WriteLine(" IsReadOnly = {0},", this.IsReadOnly); writer.WriteLine(" Count = {0}{1}", this.Count, this.Count > 0 ? "," : ""); for (int i = 0; i < this.Count; i++) { writer.WriteLine(" Clause[{0}] = {1}{2}", i, this[i], i < this.Count - 1 ? "," : ""); } writer.WriteLine(" )"); return writer.ToString(); } } public bool TryFind (out TClause clause) where TClause : SecurityKeyIdentifierClause { for (int i = 0; i < this.clauses.Count; i++) { TClause c = this.clauses[i] as TClause; if (c != null) { clause = c; return true; } } clause = null; return false; } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CfgParser.cs
- BamlReader.cs
- CalendarDay.cs
- ipaddressinformationcollection.cs
- DbConnectionPoolOptions.cs
- NativeMethods.cs
- EntityDataSourceUtil.cs
- MessageLoggingElement.cs
- AlternateView.cs
- ConstantProjectedSlot.cs
- DetailsViewUpdateEventArgs.cs
- TrackingRecord.cs
- CompiledIdentityConstraint.cs
- ValueSerializer.cs
- TransformPattern.cs
- HttpRawResponse.cs
- MatrixUtil.cs
- HostedHttpContext.cs
- Literal.cs
- DesignerToolStripControlHost.cs
- DesignParameter.cs
- WebColorConverter.cs
- EDesignUtil.cs
- SqlDataSourceStatusEventArgs.cs
- EdmProviderManifest.cs
- XmlSchemaSimpleTypeRestriction.cs
- DESCryptoServiceProvider.cs
- SubtreeProcessor.cs
- EntityViewGenerationConstants.cs
- Dump.cs
- DesigntimeLicenseContext.cs
- PasswordBox.cs
- ProxyWebPartConnectionCollection.cs
- SimpleHandlerBuildProvider.cs
- ExpressionPrinter.cs
- HttpRawResponse.cs
- SchemaImporter.cs
- CompilerCollection.cs
- HttpWebResponse.cs
- XmlEntityReference.cs
- HostedHttpRequestAsyncResult.cs
- cookiecollection.cs
- AssociationType.cs
- SQLRoleProvider.cs
- FirstQueryOperator.cs
- HTMLTextWriter.cs
- HwndHostAutomationPeer.cs
- CodeChecksumPragma.cs
- PathSegmentCollection.cs
- DoubleAnimationBase.cs
- SingleAnimationBase.cs
- ISAPIRuntime.cs
- TemplateParser.cs
- NegatedConstant.cs
- DataReaderContainer.cs
- ViewPort3D.cs
- ClientSideQueueItem.cs
- TreeNodeCollection.cs
- ResourceAssociationTypeEnd.cs
- XmlSignificantWhitespace.cs
- FaultPropagationRecord.cs
- WebPartHelpVerb.cs
- COAUTHINFO.cs
- DocobjHost.cs
- WSDualHttpSecurityElement.cs
- DataSvcMapFile.cs
- ContractTypeNameCollection.cs
- ConfigurationCollectionAttribute.cs
- MultiPropertyDescriptorGridEntry.cs
- HttpListenerContext.cs
- EventLogger.cs
- GridViewSelectEventArgs.cs
- ObjectDataSourceDisposingEventArgs.cs
- FormClosedEvent.cs
- TextEditorTables.cs
- RadioButton.cs
- ActivityBuilder.cs
- AttachedAnnotation.cs
- XsltSettings.cs
- PnrpPermission.cs
- WebBrowserProgressChangedEventHandler.cs
- RoutedEventHandlerInfo.cs
- ColorMap.cs
- FilteredXmlReader.cs
- XmlCountingReader.cs
- EventTrigger.cs
- Trigger.cs
- EventProviderWriter.cs
- StorageConditionPropertyMapping.cs
- InkCanvasInnerCanvas.cs
- URLMembershipCondition.cs
- DocumentOrderComparer.cs
- DoubleConverter.cs
- ApplicationTrust.cs
- ADRoleFactoryConfiguration.cs
- Int32EqualityComparer.cs
- Tracking.cs
- SchemaAttDef.cs
- ManagementQuery.cs
- PublisherIdentityPermission.cs