Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / security / system / security / authentication / ExtendedProtection / ServiceNameCollection.cs / 1 / ServiceNameCollection.cs
using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Collections; using System.Diagnostics; namespace System.Security.Authentication.ExtendedProtection { // derived from ReadOnlyCollectionBase because it needs to be back ported to .Net 1.x 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.InvariantCultureIgnoreCase) == 0) { found = true; break; } } return found; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Collections; using System.Diagnostics; namespace System.Security.Authentication.ExtendedProtection { // derived from ReadOnlyCollectionBase because it needs to be back ported to .Net 1.x 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.InvariantCultureIgnoreCase) == 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
- _ShellExpression.cs
- MimeBasePart.cs
- HttpModuleActionCollection.cs
- SqlRetyper.cs
- BitmapEffectGroup.cs
- Padding.cs
- NameValuePair.cs
- EndpointDiscoveryMetadata.cs
- DashStyles.cs
- CompilerInfo.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- X509UI.cs
- ToolStripContentPanel.cs
- CompilerState.cs
- SoapSchemaExporter.cs
- ClusterSafeNativeMethods.cs
- CellQuery.cs
- DataGridCell.cs
- MailWriter.cs
- SystemIdentity.cs
- TrackingDataItemValue.cs
- EntityContainerAssociationSet.cs
- PositiveTimeSpanValidatorAttribute.cs
- ComboBoxItem.cs
- SqlProfileProvider.cs
- ExpandedWrapper.cs
- WebBrowserNavigatedEventHandler.cs
- SqlResolver.cs
- GenericEnumerator.cs
- ThemeDictionaryExtension.cs
- DecimalFormatter.cs
- TargetControlTypeCache.cs
- UpdatePanel.cs
- CommandHelper.cs
- TitleStyle.cs
- ListBoxAutomationPeer.cs
- XmlSchemaSimpleType.cs
- PropertyMetadata.cs
- Soap.cs
- ExceptionUtil.cs
- GridSplitter.cs
- dbenumerator.cs
- TwoPhaseCommit.cs
- BitStack.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- XmlWellformedWriter.cs
- Model3DGroup.cs
- DiscoveryInnerClientManaged11.cs
- Int16AnimationUsingKeyFrames.cs
- InvokeFunc.cs
- TextSpan.cs
- SynchronizedInputHelper.cs
- SqlFormatter.cs
- PropertyMapper.cs
- SupportingTokenSpecification.cs
- SQLBytes.cs
- EntryPointNotFoundException.cs
- Thumb.cs
- MarkerProperties.cs
- AsyncOperationManager.cs
- XhtmlBasicPhoneCallAdapter.cs
- __Filters.cs
- SlipBehavior.cs
- Monitor.cs
- TaiwanCalendar.cs
- ExceptionUtil.cs
- FrameworkContentElement.cs
- ContainerVisual.cs
- FreezableCollection.cs
- ProfileGroupSettings.cs
- CanonicalXml.cs
- XPathEmptyIterator.cs
- QuaternionRotation3D.cs
- WebPartEditorApplyVerb.cs
- StateItem.cs
- DataMemberListEditor.cs
- ContextStaticAttribute.cs
- UInt64Storage.cs
- UndoUnit.cs
- SqlLiftWhereClauses.cs
- HTMLTextWriter.cs
- ObjectSet.cs
- CryptoProvider.cs
- DataObjectSettingDataEventArgs.cs
- HtmlInputControl.cs
- ParentControlDesigner.cs
- LoginCancelEventArgs.cs
- MarkupCompilePass1.cs
- WebBrowserSiteBase.cs
- IconBitmapDecoder.cs
- ClientData.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- MultiSelector.cs
- MouseButton.cs
- RotateTransform3D.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- XslCompiledTransform.cs
- DataGridViewAddColumnDialog.cs
- PagerSettings.cs
- PresentationTraceSources.cs