Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / SecurityKeyIdentifier.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ClassicBorderDecorator.cs
- GridViewAutomationPeer.cs
- __TransparentProxy.cs
- StatusBarDrawItemEvent.cs
- IndicCharClassifier.cs
- CompositionTarget.cs
- PrincipalPermissionMode.cs
- ContentFilePart.cs
- DataFieldConverter.cs
- PrintController.cs
- SqlDependency.cs
- Bits.cs
- TraceSource.cs
- StateFinalizationDesigner.cs
- InkSerializer.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- OptimalBreakSession.cs
- _OSSOCK.cs
- BinaryNode.cs
- Marshal.cs
- ProcessHost.cs
- LicenseException.cs
- NetSectionGroup.cs
- XmlSiteMapProvider.cs
- HandlerBase.cs
- TaskFactory.cs
- PopupEventArgs.cs
- BooleanProjectedSlot.cs
- cookiecontainer.cs
- ZipIOLocalFileDataDescriptor.cs
- EventLogger.cs
- PropertyDescriptorComparer.cs
- KeyTimeConverter.cs
- PersistenceContext.cs
- Rfc2898DeriveBytes.cs
- ReadOnlyCollection.cs
- ECDiffieHellman.cs
- SynchronizedChannelCollection.cs
- DbConnectionInternal.cs
- TextElementAutomationPeer.cs
- ParameterInfo.cs
- HostAdapter.cs
- StorageComplexPropertyMapping.cs
- CompressStream.cs
- FacetDescription.cs
- WebControl.cs
- PatternMatchRules.cs
- KnownColorTable.cs
- Oid.cs
- NativeMethods.cs
- SynchronizedPool.cs
- CDSsyncETWBCLProvider.cs
- SelectionRangeConverter.cs
- MappingSource.cs
- SettingsBindableAttribute.cs
- ServiceHostFactory.cs
- XmlObjectSerializerReadContextComplex.cs
- DirectoryObjectSecurity.cs
- Decorator.cs
- Symbol.cs
- XmlSchemaAnyAttribute.cs
- FrugalMap.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- CFStream.cs
- MruCache.cs
- WaitHandleCannotBeOpenedException.cs
- StyleHelper.cs
- KoreanCalendar.cs
- ObjectKeyFrameCollection.cs
- _TimerThread.cs
- ClientRoleProvider.cs
- ListViewUpdateEventArgs.cs
- SaveFileDialog.cs
- MainMenu.cs
- ColumnResizeAdorner.cs
- EventLogEntry.cs
- DictionarySectionHandler.cs
- propertytag.cs
- PropertyGridEditorPart.cs
- GlobalProxySelection.cs
- TreeNodeStyle.cs
- ByteAnimation.cs
- SrgsElementFactoryCompiler.cs
- VarInfo.cs
- HttpListenerRequest.cs
- EventSourceCreationData.cs
- ContextMenu.cs
- ArcSegment.cs
- StorageSetMapping.cs
- OpenTypeLayout.cs
- DataGridItemEventArgs.cs
- LinqToSqlWrapper.cs
- CharacterHit.cs
- ToolStripSplitStackLayout.cs
- ThicknessAnimationBase.cs
- Semaphore.cs
- TypedTableBase.cs
- translator.cs
- SmtpSection.cs
- ISAPIWorkerRequest.cs