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
- TargetInvocationException.cs
- DataTrigger.cs
- Floater.cs
- ContextBase.cs
- RoutedUICommand.cs
- ContentFilePart.cs
- ShaperBuffers.cs
- OracleParameterBinding.cs
- JobCollate.cs
- _OSSOCK.cs
- BinaryParser.cs
- CodeTypeDelegate.cs
- XPathMultyIterator.cs
- Attribute.cs
- WindowProviderWrapper.cs
- HtmlAnchor.cs
- QueryOutputWriter.cs
- UmAlQuraCalendar.cs
- WindowsTab.cs
- GeneralTransform3D.cs
- ResourcePool.cs
- SevenBitStream.cs
- IncrementalReadDecoders.cs
- AmbiguousMatchException.cs
- DataComponentNameHandler.cs
- ContextStaticAttribute.cs
- PlanCompiler.cs
- WebPartDisplayMode.cs
- LiteralDesigner.cs
- AppDomainAttributes.cs
- ActivityPreviewDesigner.cs
- DNS.cs
- BufferedGraphicsContext.cs
- ImageFormat.cs
- XmlSchemaSet.cs
- TrustManagerMoreInformation.cs
- MasterPage.cs
- ContainerAction.cs
- HttpChannelHelper.cs
- TextParaLineResult.cs
- Matrix3D.cs
- JpegBitmapEncoder.cs
- MarkerProperties.cs
- StringAnimationUsingKeyFrames.cs
- UnsafeCollabNativeMethods.cs
- TableItemStyle.cs
- SignalGate.cs
- VectorAnimationBase.cs
- XslTransform.cs
- LoginView.cs
- Resources.Designer.cs
- SqlRetyper.cs
- RootProfilePropertySettingsCollection.cs
- AccessedThroughPropertyAttribute.cs
- Popup.cs
- ExpandSegmentCollection.cs
- TableParaClient.cs
- CodeLinePragma.cs
- HtmlInputRadioButton.cs
- DbSourceParameterCollection.cs
- ObjectItemAssemblyLoader.cs
- CollectionEditor.cs
- StreamGeometry.cs
- _SingleItemRequestCache.cs
- EditBehavior.cs
- KeyboardEventArgs.cs
- CryptoHelper.cs
- ModuleBuilder.cs
- FrameworkElementFactoryMarkupObject.cs
- InputMethodStateTypeInfo.cs
- AxHost.cs
- SecurityPolicySection.cs
- XmlMembersMapping.cs
- DetailsViewUpdatedEventArgs.cs
- WebPartZone.cs
- EventManager.cs
- JoinTreeNode.cs
- SqlMethodAttribute.cs
- MediaCommands.cs
- Selection.cs
- DataObjectCopyingEventArgs.cs
- SqlBooleanMismatchVisitor.cs
- ClientBuildManager.cs
- NamespaceDisplay.xaml.cs
- ExpressionLexer.cs
- Blend.cs
- HttpContextBase.cs
- NavigationProgressEventArgs.cs
- SynchronizedInputPattern.cs
- TemplateApplicationHelper.cs
- TextClipboardData.cs
- TextTreeInsertElementUndoUnit.cs
- CookielessHelper.cs
- StylusShape.cs
- ColorConvertedBitmap.cs
- Constraint.cs
- CompressionTracing.cs
- validationstate.cs
- FactoryId.cs
- GeneralTransform3DGroup.cs