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
- OwnerDrawPropertyBag.cs
- NameValueFileSectionHandler.cs
- objectresult_tresulttype.cs
- RadioButtonBaseAdapter.cs
- SqlColumnizer.cs
- GorillaCodec.cs
- UnmanagedHandle.cs
- ProtectedProviderSettings.cs
- RedBlackList.cs
- NativeMethods.cs
- Funcletizer.cs
- BasicSecurityProfileVersion.cs
- EntityStoreSchemaGenerator.cs
- ColumnWidthChangedEvent.cs
- CompilationUtil.cs
- HighContrastHelper.cs
- TextEmbeddedObject.cs
- CheckedPointers.cs
- SemanticResolver.cs
- AccessKeyManager.cs
- RuntimeWrappedException.cs
- HtmlInputFile.cs
- LeaseManager.cs
- PropertyToken.cs
- ObfuscateAssemblyAttribute.cs
- TrustManager.cs
- BaseProcessor.cs
- PingOptions.cs
- SimpleModelProvider.cs
- SchemaCollectionCompiler.cs
- ProcessingInstructionAction.cs
- IResourceProvider.cs
- userdatakeys.cs
- Page.cs
- OleDbException.cs
- Content.cs
- DateTimePickerDesigner.cs
- EditingCoordinator.cs
- BufferedOutputStream.cs
- FontSourceCollection.cs
- GeneralTransform3DGroup.cs
- SoapObjectWriter.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- InputProcessorProfilesLoader.cs
- PropertySet.cs
- ContainerAction.cs
- complextypematerializer.cs
- OperationCanceledException.cs
- KernelTypeValidation.cs
- ButtonColumn.cs
- FileNotFoundException.cs
- ObservableDictionary.cs
- WebBrowserContainer.cs
- TargetParameterCountException.cs
- ObjectContextServiceProvider.cs
- EventSinkHelperWriter.cs
- DrawingCollection.cs
- GenericIdentity.cs
- RepeatBehavior.cs
- TreeNodeCollection.cs
- HtmlButton.cs
- DataTrigger.cs
- ResourceDefaultValueAttribute.cs
- PrintDocument.cs
- DispatcherSynchronizationContext.cs
- TlsnegoTokenAuthenticator.cs
- DataGridViewComboBoxEditingControl.cs
- GridViewDeleteEventArgs.cs
- SelectionService.cs
- CommandCollectionEditor.cs
- SecurityElement.cs
- securestring.cs
- RadioButton.cs
- TypeInformation.cs
- AnonymousIdentificationModule.cs
- GridViewHeaderRowPresenter.cs
- XmlQueryContext.cs
- DBConnectionString.cs
- BitHelper.cs
- IndexedString.cs
- ProtocolElementCollection.cs
- MemberAccessException.cs
- HwndProxyElementProvider.cs
- HealthMonitoringSectionHelper.cs
- WebControlToolBoxItem.cs
- StringArrayConverter.cs
- HttpListener.cs
- LiteralTextParser.cs
- MachineKeyConverter.cs
- QilScopedVisitor.cs
- FixedSOMTextRun.cs
- indexingfiltermarshaler.cs
- ParseHttpDate.cs
- HostProtectionPermission.cs
- ImageDrawing.cs
- AuthenticationModulesSection.cs
- DataGridRowHeaderAutomationPeer.cs
- SystemDiagnosticsSection.cs
- FixedElement.cs
- Int32EqualityComparer.cs