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
- ProfileInfo.cs
- CommentAction.cs
- ProgressPage.cs
- ClientRolePrincipal.cs
- DayRenderEvent.cs
- DeviceContexts.cs
- OleDbDataReader.cs
- CriticalFileToken.cs
- Transform.cs
- IImplicitResourceProvider.cs
- FusionWrap.cs
- RouteUrlExpressionBuilder.cs
- PathGeometry.cs
- PasswordValidationException.cs
- VideoDrawing.cs
- AxHostDesigner.cs
- XmlProcessingInstruction.cs
- SqlDataSourceView.cs
- Statements.cs
- InheritanceAttribute.cs
- ThemeableAttribute.cs
- IPipelineRuntime.cs
- ToggleButtonAutomationPeer.cs
- IgnoreFlushAndCloseStream.cs
- WebPartDisplayModeCancelEventArgs.cs
- TableItemPattern.cs
- TypeHelper.cs
- EntityModelSchemaGenerator.cs
- ExpressionLexer.cs
- TreeNodeEventArgs.cs
- HTMLTagNameToTypeMapper.cs
- XamlSerializer.cs
- ColumnClickEvent.cs
- SqlFactory.cs
- XmlSchemaElement.cs
- DataTemplate.cs
- CroppedBitmap.cs
- StorageMappingItemLoader.cs
- XmlSchemaGroup.cs
- OutputScopeManager.cs
- ObjectDataSourceChooseTypePanel.cs
- NameValuePermission.cs
- WarningException.cs
- DataRecordInfo.cs
- HtmlImage.cs
- ParserExtension.cs
- CodeGen.cs
- SqlCacheDependencySection.cs
- PatternMatcher.cs
- ContainerSelectorGlyph.cs
- BitmapImage.cs
- Int32RectConverter.cs
- TransformerTypeCollection.cs
- TimeSpanValidator.cs
- TypedReference.cs
- DockPattern.cs
- SemaphoreFullException.cs
- GlobalizationSection.cs
- XPathParser.cs
- SystemPens.cs
- Win32NamedPipes.cs
- DataGridAddNewRow.cs
- SafeEventLogReadHandle.cs
- DoWhile.cs
- PersistenceTypeAttribute.cs
- FixedSOMFixedBlock.cs
- SoapCodeExporter.cs
- MustUnderstandBehavior.cs
- EntityContainer.cs
- TTSVoice.cs
- ColumnMapTranslator.cs
- SoapProtocolReflector.cs
- GestureRecognitionResult.cs
- DummyDataSource.cs
- HttpEncoder.cs
- SerializerDescriptor.cs
- ZoomPercentageConverter.cs
- XmlFormatWriterGenerator.cs
- CodeStatementCollection.cs
- RoleManagerModule.cs
- Attributes.cs
- DbBuffer.cs
- EventMap.cs
- XmlSerializationReader.cs
- ObjectResult.cs
- SortExpressionBuilder.cs
- TextFragmentEngine.cs
- DataSpaceManager.cs
- FolderBrowserDialogDesigner.cs
- RenameRuleObjectDialog.cs
- PackageFilter.cs
- StringReader.cs
- Bidi.cs
- NativeMethodsCLR.cs
- PenCursorManager.cs
- HttpModulesSection.cs
- TableCell.cs
- MethodBody.cs
- FileRecordSequenceCompletedAsyncResult.cs
- DbDataSourceEnumerator.cs