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
- TypeDescriptor.cs
- X509Utils.cs
- OperandQuery.cs
- TextTreeTextBlock.cs
- EncoderParameters.cs
- DataListItemEventArgs.cs
- SvcMapFileSerializer.cs
- LogoValidationException.cs
- DbConnectionPoolGroupProviderInfo.cs
- ObjectListDataBindEventArgs.cs
- DbConnectionPool.cs
- SmtpReplyReaderFactory.cs
- DataBindingCollection.cs
- KeyedCollection.cs
- ReceiveErrorHandling.cs
- FlowDocumentPage.cs
- WindowsGraphics2.cs
- TranslateTransform.cs
- XmlTextReaderImpl.cs
- ConsoleTraceListener.cs
- WebPartZoneBase.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- FloatSumAggregationOperator.cs
- DirectoryInfo.cs
- _LocalDataStore.cs
- CalendarTable.cs
- ByteKeyFrameCollection.cs
- HashStream.cs
- Menu.cs
- XmlNodeChangedEventManager.cs
- HtmlInputButton.cs
- Unit.cs
- Cursors.cs
- ObjectDataSourceSelectingEventArgs.cs
- Win32MouseDevice.cs
- StatusBarItem.cs
- SiteMapProvider.cs
- DoubleLinkList.cs
- CodeMemberMethod.cs
- StylusPlugin.cs
- WebPartEditorApplyVerb.cs
- SpoolingTask.cs
- LookupNode.cs
- DbModificationClause.cs
- ArraySortHelper.cs
- XmlBaseWriter.cs
- TrackingQueryElement.cs
- EdmError.cs
- RegionData.cs
- Material.cs
- CodeGotoStatement.cs
- ActivityDesignerLayoutSerializers.cs
- DeploymentSection.cs
- SettingsProperty.cs
- Helper.cs
- SolidBrush.cs
- SequenceDesigner.xaml.cs
- ReadOnlyCollectionBuilder.cs
- ProviderConnectionPointCollection.cs
- HostProtectionException.cs
- SqlResolver.cs
- TextFormatter.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- TraceXPathNavigator.cs
- OleDbConnectionInternal.cs
- OutputCacheSection.cs
- XmlSchemaAttributeGroup.cs
- QuotedPrintableStream.cs
- InvokeProviderWrapper.cs
- Rect3DValueSerializer.cs
- TransactionContext.cs
- Parser.cs
- DeviceContext2.cs
- ProfileService.cs
- UnmanagedMarshal.cs
- InvalidCastException.cs
- InputElement.cs
- Win32Exception.cs
- BaseParaClient.cs
- DataGridViewButtonColumn.cs
- FrameAutomationPeer.cs
- ExceptionUtil.cs
- Expressions.cs
- CodeSubDirectory.cs
- ping.cs
- DataServiceStreamProviderWrapper.cs
- ServiceMemoryGates.cs
- SwitchExpression.cs
- Currency.cs
- Base64Encoder.cs
- ItemType.cs
- CompilerErrorCollection.cs
- EnumerableCollectionView.cs
- LocalIdCollection.cs
- DataRecordInternal.cs
- UIPropertyMetadata.cs
- RuleEngine.cs
- FixedTextContainer.cs
- TableLayoutStyle.cs
- CodeLabeledStatement.cs