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
- TransportChannelFactory.cs
- XmlUtf8RawTextWriter.cs
- LinearKeyFrames.cs
- SuppressMergeCheckAttribute.cs
- SoapClientMessage.cs
- TextTreeFixupNode.cs
- PropertyChangedEventArgs.cs
- KeyFrames.cs
- CodeExpressionStatement.cs
- StickyNoteAnnotations.cs
- DispatcherEventArgs.cs
- WindowsPrincipal.cs
- FactoryGenerator.cs
- XmlSiteMapProvider.cs
- CurrentChangingEventManager.cs
- Dictionary.cs
- XmlResolver.cs
- XmlCharType.cs
- HttpWriter.cs
- Polygon.cs
- DbSourceParameterCollection.cs
- BlobPersonalizationState.cs
- adornercollection.cs
- LayoutUtils.cs
- XmlBaseWriter.cs
- DataSetMappper.cs
- ConfigurationLockCollection.cs
- ConfigXmlAttribute.cs
- EllipticalNodeOperations.cs
- XmlILCommand.cs
- BevelBitmapEffect.cs
- Message.cs
- InkCanvasSelectionAdorner.cs
- IfAction.cs
- Camera.cs
- Section.cs
- CatalogPartChrome.cs
- BinaryKeyIdentifierClause.cs
- SqlClientWrapperSmiStream.cs
- ResourceProperty.cs
- TableLayoutPanelDesigner.cs
- TargetControlTypeCache.cs
- SdlChannelSink.cs
- ActiveXHost.cs
- UpdateManifestForBrowserApplication.cs
- ResourceReferenceKeyNotFoundException.cs
- ExpressionEditorSheet.cs
- SamlAdvice.cs
- RootBrowserWindowProxy.cs
- ParserHooks.cs
- MergablePropertyAttribute.cs
- Stackframe.cs
- RoleService.cs
- XPathNavigatorReader.cs
- ComboBoxAutomationPeer.cs
- ObjRef.cs
- ToolStripPanelRow.cs
- CellTreeNodeVisitors.cs
- PasswordRecovery.cs
- ProfilePropertyMetadata.cs
- WinHttpWebProxyFinder.cs
- DataObjectCopyingEventArgs.cs
- NavigationFailedEventArgs.cs
- CellCreator.cs
- ExpressionBuilderContext.cs
- Environment.cs
- BufferedGenericXmlSecurityToken.cs
- NavigationService.cs
- PasswordBox.cs
- UnicodeEncoding.cs
- MethodToken.cs
- XmlComment.cs
- CallbackTimeoutsBehavior.cs
- StateDesigner.cs
- RelatedView.cs
- SubstitutionList.cs
- TextServicesPropertyRanges.cs
- HtmlInputSubmit.cs
- DmlSqlGenerator.cs
- SchemaNamespaceManager.cs
- SiteMapDataSource.cs
- DefaultTypeArgumentAttribute.cs
- TargetParameterCountException.cs
- MaskedTextBox.cs
- ArrayTypeMismatchException.cs
- IndexingContentUnit.cs
- BookmarkScope.cs
- DataGridViewUtilities.cs
- Italic.cs
- BufferModeSettings.cs
- UIElement.cs
- TreeNodeBinding.cs
- CacheHelper.cs
- Monitor.cs
- CodeIdentifier.cs
- SystemPens.cs
- DataTablePropertyDescriptor.cs
- SessionStateUtil.cs
- PageSetupDialog.cs
- PropertyInfo.cs