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
- PageParser.cs
- SQLMoneyStorage.cs
- CharacterBufferReference.cs
- FrameworkElementFactory.cs
- DataViewSettingCollection.cs
- ParameterModifier.cs
- ParameterBuilder.cs
- WsdlInspector.cs
- TypeDescriptionProvider.cs
- SQLChars.cs
- PropertyChangeTracker.cs
- DoubleLinkList.cs
- HotSpot.cs
- DesignTimeData.cs
- CompletionCallbackWrapper.cs
- FreeFormDragDropManager.cs
- CombinedGeometry.cs
- SmiXetterAccessMap.cs
- JsonFormatWriterGenerator.cs
- AmbientLight.cs
- XsltSettings.cs
- X509Extension.cs
- TableItemProviderWrapper.cs
- TextMarkerSource.cs
- Subset.cs
- RemotingAttributes.cs
- PasswordPropertyTextAttribute.cs
- ToolStripControlHost.cs
- LinqDataSourceSelectEventArgs.cs
- TransactionFlowBindingElementImporter.cs
- DynamicActivityTypeDescriptor.cs
- PageSettings.cs
- WebPartAddingEventArgs.cs
- SecureConversationVersion.cs
- QueryOperator.cs
- CharacterHit.cs
- ListItem.cs
- AddInActivator.cs
- BitmapEffectInputConnector.cs
- OutputBuffer.cs
- EntityRecordInfo.cs
- PageCache.cs
- RawMouseInputReport.cs
- LinqDataSource.cs
- TraceProvider.cs
- PolyQuadraticBezierSegment.cs
- AnnotationDocumentPaginator.cs
- SqlAliasesReferenced.cs
- PreProcessor.cs
- SplashScreen.cs
- WebConfigurationFileMap.cs
- connectionpool.cs
- TypefaceMap.cs
- ExtractorMetadata.cs
- CacheDependency.cs
- TraceUtility.cs
- ProfileProvider.cs
- PseudoWebRequest.cs
- Underline.cs
- CommunicationObjectAbortedException.cs
- WindowsFormsHost.cs
- UniqueIdentifierService.cs
- TableRowCollection.cs
- TextInfo.cs
- SapiGrammar.cs
- SoapFault.cs
- Soap12ProtocolImporter.cs
- AppDomainUnloadedException.cs
- ListDictionary.cs
- Preprocessor.cs
- SingleSelectRootGridEntry.cs
- DesignerDataTable.cs
- AuthenticationModulesSection.cs
- RelationshipSet.cs
- CodeNamespace.cs
- SpellerError.cs
- SQLInt32Storage.cs
- UserControlBuildProvider.cs
- DataBoundControlAdapter.cs
- ObjectFullSpanRewriter.cs
- TileModeValidation.cs
- DateTimeAutomationPeer.cs
- RMPermissions.cs
- MarkupExtensionParser.cs
- SignatureConfirmationElement.cs
- ChangePasswordDesigner.cs
- WebPartCloseVerb.cs
- PropertyMapper.cs
- JsonClassDataContract.cs
- LogRecordSequence.cs
- WebContext.cs
- LockCookie.cs
- ListViewDeletedEventArgs.cs
- WebPartZoneBase.cs
- ScrollEvent.cs
- MenuAdapter.cs
- XmlCountingReader.cs
- Msec.cs
- C14NUtil.cs
- TemplateControlCodeDomTreeGenerator.cs