Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / security / system / security / authentication / ExtendedProtection / ServiceNameCollection.cs / 1305376 / ServiceNameCollection.cs
using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Collections; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; namespace System.Security.Authentication.ExtendedProtection { // derived from ReadOnlyCollectionBase because it needs to be back ported to .Net 1.x [SuppressMessage("Microsoft.Design","CA1058:TypesShouldNotExtendCertainBaseTypes", Justification="changing this would be a breaking change; this code has already shipped")] [Serializable] public class ServiceNameCollection : ReadOnlyCollectionBase { public ServiceNameCollection(ICollection items) { if (items == null) { throw new ArgumentNullException("items"); } InnerList.AddRange(items); } public ServiceNameCollection Merge(string serviceName) { ArrayList newServiceNames = new ArrayList(); // be compatible with .Net 1.x; no generics newServiceNames.AddRange(this.InnerList); AddIfNew(newServiceNames, serviceName); ServiceNameCollection newCollection = new ServiceNameCollection(newServiceNames); return newCollection; } public ServiceNameCollection Merge(IEnumerable serviceNames) { ArrayList newServiceNames = new ArrayList(); // be compatible with .Net 1.x; no generics newServiceNames.AddRange(this.InnerList); // we have a pretty bad performance here: O(n^2), but since service name lists should // be small (<<50) and Merge() should not be called frequently, this shouldn't be an issue foreach (object item in serviceNames) { AddIfNew(newServiceNames, item as string); } ServiceNameCollection newCollection = new ServiceNameCollection(newServiceNames); return newCollection; } private void AddIfNew(ArrayList newServiceNames, string serviceName) { if (String.IsNullOrEmpty(serviceName)) { throw new ArgumentException(SR.GetString(SR.security_ServiceNameCollection_EmptyServiceName)); } if (!Contains(serviceName, newServiceNames)) { newServiceNames.Add(serviceName); } } private bool Contains(string searchServiceName, ICollection serviceNames) { Debug.Assert(serviceNames != null); Debug.Assert(!String.IsNullOrEmpty(searchServiceName)); bool found = false; foreach (string serviceName in serviceNames) { if (String.Compare(serviceName, searchServiceName, StringComparison.OrdinalIgnoreCase) == 0) { found = true; break; } } return found; } } } // 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
- BamlTreeUpdater.cs
- documentation.cs
- DefaultObjectMappingItemCollection.cs
- hwndwrapper.cs
- FillErrorEventArgs.cs
- CollectionBase.cs
- DbCommandTree.cs
- IQueryable.cs
- DataGridRowAutomationPeer.cs
- SerialStream.cs
- WinFormsSecurity.cs
- XmlWrappingReader.cs
- Scheduling.cs
- InternalBufferOverflowException.cs
- MappingItemCollection.cs
- Message.cs
- BaseValidator.cs
- TreeNodeBinding.cs
- MemberPath.cs
- ZoneMembershipCondition.cs
- StackSpiller.Temps.cs
- TextOptionsInternal.cs
- TextServicesDisplayAttributePropertyRanges.cs
- EditingScope.cs
- DynamicRenderer.cs
- IdentifierCollection.cs
- CounterSampleCalculator.cs
- DelayedRegex.cs
- SqlXml.cs
- precedingsibling.cs
- HandleCollector.cs
- TitleStyle.cs
- SystemWebSectionGroup.cs
- TextPenaltyModule.cs
- Rfc2898DeriveBytes.cs
- AttributedMetaModel.cs
- StickyNoteContentControl.cs
- TabControl.cs
- X509Certificate.cs
- SafeNativeMethodsMilCoreApi.cs
- ToolStripDropDownClosedEventArgs.cs
- OleDbConnectionInternal.cs
- DeclarativeConditionsCollection.cs
- PrintPreviewDialog.cs
- OdbcStatementHandle.cs
- DurationConverter.cs
- ListViewItemMouseHoverEvent.cs
- CompositeFontInfo.cs
- WebPartCancelEventArgs.cs
- ProcessHostServerConfig.cs
- BitmapEffectDrawingContextState.cs
- DataGridViewRowHeaderCell.cs
- WebPartTracker.cs
- SqlDataSourceRefreshSchemaForm.cs
- PriorityItem.cs
- ServerValidateEventArgs.cs
- CanExecuteRoutedEventArgs.cs
- ParameterModifier.cs
- ProtocolElement.cs
- MouseButton.cs
- PeerApplication.cs
- SecurityException.cs
- DurableEnlistmentState.cs
- HyperLinkStyle.cs
- PolicyUtility.cs
- SqlClientPermission.cs
- ValueQuery.cs
- DefaultValueConverter.cs
- DelegateBodyWriter.cs
- ObjectDisposedException.cs
- PointAnimationClockResource.cs
- WindowsAltTab.cs
- CheckBoxPopupAdapter.cs
- DropDownList.cs
- DataGridViewRowsAddedEventArgs.cs
- BitmapEffect.cs
- ApplicationSettingsBase.cs
- ExtensibleClassFactory.cs
- PageBuildProvider.cs
- Menu.cs
- DataBoundControlHelper.cs
- ListControl.cs
- CollectionViewProxy.cs
- HealthMonitoringSection.cs
- CheckPair.cs
- ProcessModule.cs
- Point4D.cs
- FigureParagraph.cs
- GetLedgerRequest.cs
- EncoderParameter.cs
- WebContext.cs
- RowCache.cs
- AsyncResult.cs
- WindowsClaimSet.cs
- HttpCachePolicyElement.cs
- SortFieldComparer.cs
- RegexNode.cs
- AxHost.cs
- PerformanceCounterPermissionAttribute.cs
- WindowsTitleBar.cs