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
- OutputScopeManager.cs
- CommandBindingCollection.cs
- MessageDesigner.cs
- IncrementalHitTester.cs
- ColorContextHelper.cs
- ListBox.cs
- FieldAccessException.cs
- Selection.cs
- PageCatalogPartDesigner.cs
- RenderTargetBitmap.cs
- HttpsChannelFactory.cs
- ObjectSet.cs
- NotFiniteNumberException.cs
- ByteRangeDownloader.cs
- Dispatcher.cs
- ImagingCache.cs
- ConfigurationPropertyAttribute.cs
- CannotUnloadAppDomainException.cs
- FacetDescriptionElement.cs
- PageThemeCodeDomTreeGenerator.cs
- PrinterUnitConvert.cs
- Switch.cs
- SocketAddress.cs
- Encoder.cs
- StdValidatorsAndConverters.cs
- dsa.cs
- ExpanderAutomationPeer.cs
- ToolStripContentPanelDesigner.cs
- StaticResourceExtension.cs
- Timer.cs
- WeakReferenceKey.cs
- ProtocolsConfiguration.cs
- PropertyConverter.cs
- SingleSelectRootGridEntry.cs
- XmlAutoDetectWriter.cs
- EntityAdapter.cs
- RequestedSignatureDialog.cs
- HttpProfileGroupBase.cs
- CmsInterop.cs
- HGlobalSafeHandle.cs
- Stack.cs
- View.cs
- WindowsFormsSectionHandler.cs
- TranslateTransform3D.cs
- Canonicalizers.cs
- WmpBitmapEncoder.cs
- DataGridViewColumn.cs
- HashSetDebugView.cs
- PrivilegeNotHeldException.cs
- DefaultAsyncDataDispatcher.cs
- GenericNameHandler.cs
- Validator.cs
- MSAAWinEventWrap.cs
- DataSourceHelper.cs
- WebPartDescription.cs
- FormatConvertedBitmap.cs
- ArcSegment.cs
- Exceptions.cs
- SecurityUtils.cs
- EditorZone.cs
- UriTemplateLiteralPathSegment.cs
- DataColumnChangeEvent.cs
- WSDualHttpSecurityMode.cs
- AnimationLayer.cs
- ReliableDuplexSessionChannel.cs
- ItemList.cs
- Vector3DCollectionValueSerializer.cs
- DesignerActionListCollection.cs
- FlowNode.cs
- GeneralTransformCollection.cs
- Library.cs
- _NtlmClient.cs
- TextElement.cs
- BamlLocalizableResource.cs
- SocketAddress.cs
- DeclarationUpdate.cs
- DataServiceQueryException.cs
- SessionState.cs
- PEFileEvidenceFactory.cs
- Int64Converter.cs
- FormatVersion.cs
- SqlDataSource.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- TriggerCollection.cs
- CachedFontFace.cs
- SafeUserTokenHandle.cs
- DatagridviewDisplayedBandsData.cs
- DbCommandDefinition.cs
- ScrollItemPattern.cs
- AddInDeploymentState.cs
- FragmentQueryProcessor.cs
- ProviderConnectionPoint.cs
- AnnotationHelper.cs
- FreeFormPanel.cs
- ReachPageContentSerializer.cs
- _AutoWebProxyScriptHelper.cs
- CounterSample.cs
- SQLInt64Storage.cs
- InvokeProviderWrapper.cs
- XmlSubtreeReader.cs