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
- QueryNode.cs
- FlowDocumentScrollViewer.cs
- CDSCollectionETWBCLProvider.cs
- AnnotationHelper.cs
- DetailsViewDeletedEventArgs.cs
- ServiceDeploymentInfo.cs
- DesignerVerb.cs
- ThicknessAnimationBase.cs
- TextServicesProperty.cs
- StickyNoteHelper.cs
- AccessDataSource.cs
- ArithmeticException.cs
- DataBoundControl.cs
- DateTimeUtil.cs
- RowBinding.cs
- FunctionNode.cs
- TryExpression.cs
- BindingWorker.cs
- ListenerElementsCollection.cs
- OleDbPermission.cs
- DependentList.cs
- ControlTemplate.cs
- XmlQueryType.cs
- QilTypeChecker.cs
- TextRange.cs
- counter.cs
- HttpCacheParams.cs
- __Filters.cs
- AutomationIdentifier.cs
- EntityContainerRelationshipSet.cs
- KeyConverter.cs
- SevenBitStream.cs
- TextMarkerSource.cs
- TextHidden.cs
- XmlNamespaceDeclarationsAttribute.cs
- QuadraticBezierSegment.cs
- sqlpipe.cs
- XmlCharCheckingWriter.cs
- Trigger.cs
- DataExchangeServiceBinder.cs
- DbParameterCollection.cs
- OutputCacheSettings.cs
- ThicknessConverter.cs
- ButtonColumn.cs
- Cursors.cs
- CollectionBuilder.cs
- Token.cs
- EventsTab.cs
- BackoffTimeoutHelper.cs
- CanonicalizationDriver.cs
- AssertFilter.cs
- RegularExpressionValidator.cs
- XmlSchemaInclude.cs
- DataGridViewCellValueEventArgs.cs
- CacheModeValueSerializer.cs
- GeneralTransform3DTo2DTo3D.cs
- SqlNotificationRequest.cs
- TextFragmentEngine.cs
- CheckBoxField.cs
- SHA1Managed.cs
- GenericTransactionFlowAttribute.cs
- BitVec.cs
- ProcessInfo.cs
- SystemIcmpV4Statistics.cs
- XamlParser.cs
- UIInitializationException.cs
- Listener.cs
- RegexCharClass.cs
- RegisteredExpandoAttribute.cs
- WmpBitmapDecoder.cs
- ByteStack.cs
- Int32KeyFrameCollection.cs
- XmlSchemaProviderAttribute.cs
- RectAnimationBase.cs
- ExpressionBuilderContext.cs
- ContextMenuStripGroupCollection.cs
- EntityCommandCompilationException.cs
- WebServiceMethodData.cs
- EventLogConfiguration.cs
- SrgsRulesCollection.cs
- SafeHandle.cs
- DesignerTextViewAdapter.cs
- panel.cs
- LinqDataSourceValidationException.cs
- RijndaelManaged.cs
- OdbcReferenceCollection.cs
- Compilation.cs
- SecurityKeyIdentifierClause.cs
- CheckBoxAutomationPeer.cs
- DirectionalLight.cs
- CustomGrammar.cs
- HttpCapabilitiesSectionHandler.cs
- Keywords.cs
- ManagementQuery.cs
- ClientScriptManager.cs
- InstalledFontCollection.cs
- SecurityContext.cs
- externdll.cs
- URLAttribute.cs
- DataObject.cs