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
- BulletDecorator.cs
- GenericFlowSwitchHelper.cs
- MailBnfHelper.cs
- CategoryValueConverter.cs
- SqlExpander.cs
- ButtonColumn.cs
- PropertyTabChangedEvent.cs
- BookmarkEventArgs.cs
- ListItem.cs
- EntityCodeGenerator.cs
- FixedPageAutomationPeer.cs
- SqlConnectionFactory.cs
- MemberHolder.cs
- ReferenceEqualityComparer.cs
- ComNativeDescriptor.cs
- BooleanStorage.cs
- LineSegment.cs
- Registry.cs
- SqlConnectionHelper.cs
- XmlSignificantWhitespace.cs
- ApplicationActivator.cs
- SiteMapDataSourceView.cs
- UIInitializationException.cs
- IdentityHolder.cs
- Transactions.cs
- coordinatorfactory.cs
- ParsedAttributeCollection.cs
- TypedTableBaseExtensions.cs
- MethodExpr.cs
- UnsafeNativeMethods.cs
- DataGridCaption.cs
- SwitchAttribute.cs
- FrameworkElement.cs
- ActivityStatusChangeEventArgs.cs
- LinkLabelLinkClickedEvent.cs
- PolicyManager.cs
- ScrollEventArgs.cs
- TextBox.cs
- SByte.cs
- DataServiceQueryContinuation.cs
- DoubleAnimationUsingKeyFrames.cs
- HttpContext.cs
- PrefixHandle.cs
- ObjectListDesigner.cs
- TrustVersion.cs
- DataGridViewRow.cs
- SettingsSavedEventArgs.cs
- InternalBufferManager.cs
- SectionVisual.cs
- WebBrowser.cs
- Int16Storage.cs
- TextModifier.cs
- RadioButtonRenderer.cs
- NativeMethods.cs
- QilFunction.cs
- DataViewListener.cs
- SimpleWebHandlerParser.cs
- Utility.cs
- StringAttributeCollection.cs
- COM2PictureConverter.cs
- WebPartUtil.cs
- TargetException.cs
- PrintingPermission.cs
- DoubleStorage.cs
- SHA256.cs
- PolyQuadraticBezierSegment.cs
- RTLAwareMessageBox.cs
- SizeConverter.cs
- RootBrowserWindowProxy.cs
- Drawing.cs
- ServiceBuildProvider.cs
- PerformanceCountersElement.cs
- PipeSecurity.cs
- SmiXetterAccessMap.cs
- UrlAuthFailureHandler.cs
- BindingContext.cs
- RegexCapture.cs
- RegexRunnerFactory.cs
- UdpChannelFactory.cs
- WebColorConverter.cs
- SubclassTypeValidator.cs
- _RequestLifetimeSetter.cs
- ResXBuildProvider.cs
- StylusPoint.cs
- StringFreezingAttribute.cs
- SessionSwitchEventArgs.cs
- SchemaCollectionPreprocessor.cs
- RemotingSurrogateSelector.cs
- MouseCaptureWithinProperty.cs
- UpdateCommand.cs
- CodeParameterDeclarationExpressionCollection.cs
- NativeMethods.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- WebResponse.cs
- XmlEncoding.cs
- SortQuery.cs
- WriteFileContext.cs
- SQLString.cs
- ProtectedProviderSettings.cs
- BeginStoryboard.cs