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
- EpmHelper.cs
- Vector3DAnimationBase.cs
- ChannelPool.cs
- FontUnit.cs
- SettingsPropertyWrongTypeException.cs
- DataGridViewColumnCollectionDialog.cs
- CodeGroup.cs
- ThicknessAnimation.cs
- CroppedBitmap.cs
- BinaryNegotiation.cs
- HatchBrush.cs
- UInt16.cs
- ZipFileInfo.cs
- HttpDictionary.cs
- ProtocolsConfigurationEntry.cs
- XPathSingletonIterator.cs
- ProtocolViolationException.cs
- WebPartConnectionsCancelEventArgs.cs
- SpoolingTask.cs
- TextEffect.cs
- TextTrailingWordEllipsis.cs
- SmiXetterAccessMap.cs
- ProcessModule.cs
- XmlConvert.cs
- Region.cs
- EndOfStreamException.cs
- EventSetter.cs
- PDBReader.cs
- SimpleTextLine.cs
- Directory.cs
- XmlNodeReader.cs
- AssemblyBuilder.cs
- CodeAssignStatement.cs
- ContentDisposition.cs
- HGlobalSafeHandle.cs
- ReadOnlyTernaryTree.cs
- TransactionProxy.cs
- _SSPISessionCache.cs
- TextComposition.cs
- DataGridViewColumnEventArgs.cs
- FixedTextBuilder.cs
- ReplacementText.cs
- Point4D.cs
- XmlSchemaSimpleTypeUnion.cs
- EmptyCollection.cs
- XmlElementCollection.cs
- BitConverter.cs
- PropertyGridEditorPart.cs
- CodeArgumentReferenceExpression.cs
- ColorMap.cs
- TypeConverterHelper.cs
- SqlConnectionString.cs
- COSERVERINFO.cs
- HandlerFactoryWrapper.cs
- _OverlappedAsyncResult.cs
- VirtualDirectoryMapping.cs
- DriveNotFoundException.cs
- FunctionMappingTranslator.cs
- WindowsEditBoxRange.cs
- DrawingContext.cs
- MonitoringDescriptionAttribute.cs
- UserUseLicenseDictionaryLoader.cs
- TrackingServices.cs
- PropertiesTab.cs
- DeviceContext2.cs
- GraphicsPath.cs
- SqlDataSourceStatusEventArgs.cs
- CommonXSendMessage.cs
- securestring.cs
- TimeSpanValidator.cs
- SymbolEqualComparer.cs
- TraceSwitch.cs
- EdmItemCollection.OcAssemblyCache.cs
- NetWebProxyFinder.cs
- ExpressionPrefixAttribute.cs
- SystemMulticastIPAddressInformation.cs
- ErrorEventArgs.cs
- AvtEvent.cs
- GatewayIPAddressInformationCollection.cs
- StagingAreaInputItem.cs
- ControlTemplate.cs
- Preprocessor.cs
- RadioButtonBaseAdapter.cs
- NestedContainer.cs
- ZipIOExtraFieldElement.cs
- MatrixAnimationBase.cs
- WebPartConnectVerb.cs
- AuthenticationManager.cs
- KeyboardEventArgs.cs
- SmtpFailedRecipientException.cs
- GroupBox.cs
- SimpleTableProvider.cs
- BulletedList.cs
- VerticalAlignConverter.cs
- DependencyPropertyConverter.cs
- templategroup.cs
- ShaderEffect.cs
- FormatException.cs
- DecimalStorage.cs
- TdsParserHelperClasses.cs