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
- ContextBase.cs
- ErrorCodes.cs
- _KerberosClient.cs
- Int64AnimationUsingKeyFrames.cs
- InputLanguageSource.cs
- XmlDataLoader.cs
- ComPlusInstanceContextInitializer.cs
- XmlUtil.cs
- WSFederationHttpSecurityElement.cs
- PointHitTestResult.cs
- GeneralTransform3DCollection.cs
- ServerValidateEventArgs.cs
- LinkUtilities.cs
- ProfileGroupSettingsCollection.cs
- JpegBitmapDecoder.cs
- DataControlImageButton.cs
- ByteStack.cs
- CustomErrorCollection.cs
- DataService.cs
- TextSelectionHighlightLayer.cs
- PaperSource.cs
- MonitorWrapper.cs
- FixedSOMPage.cs
- RuntimeIdentifierPropertyAttribute.cs
- StyleXamlParser.cs
- FixedSOMImage.cs
- ProcessModule.cs
- StrongName.cs
- ClientApiGenerator.cs
- RelatedCurrencyManager.cs
- StandardCommands.cs
- MarkupWriter.cs
- GeneralTransform3DCollection.cs
- SqlDataSource.cs
- TypeUnloadedException.cs
- NativeMethods.cs
- SchemaTypeEmitter.cs
- MimeFormReflector.cs
- HandleValueEditor.cs
- Predicate.cs
- EventLogPermissionAttribute.cs
- ControlPropertyNameConverter.cs
- HttpSessionStateBase.cs
- PeerNameRecord.cs
- MenuItem.cs
- AudienceUriMode.cs
- TCEAdapterGenerator.cs
- AssociationTypeEmitter.cs
- SvcMapFileLoader.cs
- ImageSourceValueSerializer.cs
- ShaperBuffers.cs
- ImageAutomationPeer.cs
- BaseCodePageEncoding.cs
- SystemIPInterfaceStatistics.cs
- SqlTypesSchemaImporter.cs
- RegionInfo.cs
- SystemTcpStatistics.cs
- CodeChecksumPragma.cs
- JsonXmlDataContract.cs
- CompiledQuery.cs
- HtmlButton.cs
- CodeStatement.cs
- CatalogPartChrome.cs
- SqlReferenceCollection.cs
- EventHandlers.cs
- TreeNodeCollectionEditor.cs
- RequestCacheEntry.cs
- UserControl.cs
- XmlAtomicValue.cs
- DiagnosticsConfigurationHandler.cs
- GradientBrush.cs
- MsmqDiagnostics.cs
- LiteralText.cs
- DllNotFoundException.cs
- Convert.cs
- CodeSnippetTypeMember.cs
- WorkItem.cs
- TranslateTransform.cs
- DataGridRow.cs
- nulltextcontainer.cs
- XmlSchemaComplexContentExtension.cs
- TextRangeEditTables.cs
- TraceRecords.cs
- Section.cs
- NativeMethods.cs
- TextWriterTraceListener.cs
- TextRangeBase.cs
- CodeTypeReferenceExpression.cs
- FunctionUpdateCommand.cs
- SBCSCodePageEncoding.cs
- LinkedResourceCollection.cs
- DataBinding.cs
- LicenseException.cs
- SymmetricAlgorithm.cs
- ParallelLoopState.cs
- ManagedFilter.cs
- FamilyMapCollection.cs
- RuntimeConfigLKG.cs
- DesignerAutoFormatCollection.cs
- WebBrowserUriTypeConverter.cs