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
- DrawingContextDrawingContextWalker.cs
- OleAutBinder.cs
- TopClause.cs
- FixedTextBuilder.cs
- SymmetricAlgorithm.cs
- Ipv6Element.cs
- ProfilePropertyNameValidator.cs
- ProfileServiceManager.cs
- SymDocumentType.cs
- EntityKeyElement.cs
- SqlDataSourceConfigureFilterForm.cs
- CodeDomLocalizationProvider.cs
- EntityWrapperFactory.cs
- CommandEventArgs.cs
- DBAsyncResult.cs
- NativeMethods.cs
- DataGridViewCellEventArgs.cs
- RsaSecurityTokenAuthenticator.cs
- Label.cs
- DataRecordObjectView.cs
- PropertyManager.cs
- CommandHelper.cs
- EqualityComparer.cs
- Lease.cs
- SafeHandles.cs
- FileReader.cs
- FileNotFoundException.cs
- XmlAttributeAttribute.cs
- DataTrigger.cs
- TableItemStyle.cs
- RequestChannelBinder.cs
- BitmapEffectState.cs
- Soap12ProtocolReflector.cs
- IResourceProvider.cs
- StyleHelper.cs
- compensatingcollection.cs
- RequestSecurityTokenResponse.cs
- EditorAttribute.cs
- Parser.cs
- PerspectiveCamera.cs
- XmlSerializationGeneratedCode.cs
- HttpListenerRequestUriBuilder.cs
- ParserHooks.cs
- DataGridViewSelectedCellCollection.cs
- DataGridViewCellMouseEventArgs.cs
- ConsumerConnectionPointCollection.cs
- _Events.cs
- DesignSurfaceEvent.cs
- Events.cs
- InputScopeNameConverter.cs
- RegistrySecurity.cs
- DataViewListener.cs
- TextServicesCompartmentEventSink.cs
- HierarchicalDataBoundControlAdapter.cs
- XmlTextWriter.cs
- SingleAnimation.cs
- PreDigestedSignedInfo.cs
- FixedSOMFixedBlock.cs
- ProjectionPathBuilder.cs
- NativeMethods.cs
- RegisterResponseInfo.cs
- List.cs
- Executor.cs
- KeyedCollection.cs
- Timer.cs
- MissingFieldException.cs
- InkCanvasInnerCanvas.cs
- BoundColumn.cs
- BitmapFrameDecode.cs
- Lease.cs
- ToolStripPanelCell.cs
- PolicyImporterElementCollection.cs
- MessageDecoder.cs
- NotifyCollectionChangedEventArgs.cs
- HttpListenerException.cs
- NodeInfo.cs
- PropertiesTab.cs
- _AcceptOverlappedAsyncResult.cs
- TdsParserHelperClasses.cs
- FormsAuthenticationCredentials.cs
- HttpPostServerProtocol.cs
- ControlLocalizer.cs
- SqlDataSourceSelectingEventArgs.cs
- DataKeyArray.cs
- PermissionListSet.cs
- AddInIpcChannel.cs
- ToolStripScrollButton.cs
- webproxy.cs
- RequestCachePolicy.cs
- PartialTrustValidationBehavior.cs
- SrgsGrammarCompiler.cs
- RotateTransform.cs
- _ConnectStream.cs
- SectionXmlInfo.cs
- LazyTextWriterCreator.cs
- MsmqPoisonMessageException.cs
- RegisteredScript.cs
- ELinqQueryState.cs
- HtmlInputCheckBox.cs
- IndexingContentUnit.cs