Code:
/ 4.0 / 4.0 / 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. 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
- ArgIterator.cs
- XLinq.cs
- RowUpdatingEventArgs.cs
- CollectionType.cs
- XmlSchemaSet.cs
- AnonymousIdentificationSection.cs
- FontDialog.cs
- WrapPanel.cs
- SoapReflectionImporter.cs
- ColumnBinding.cs
- ToRequest.cs
- VirtualizingStackPanel.cs
- PixelFormatConverter.cs
- GridLengthConverter.cs
- ControlCommandSet.cs
- XamlSerializerUtil.cs
- PointAnimation.cs
- followingquery.cs
- NativeActivityFaultContext.cs
- AxHostDesigner.cs
- ColorAnimationBase.cs
- _HeaderInfo.cs
- Hash.cs
- IfAction.cs
- Registry.cs
- DataListItem.cs
- TransformProviderWrapper.cs
- CookieParameter.cs
- ExpressionHelper.cs
- XamlWrappingReader.cs
- TypeForwardedToAttribute.cs
- MatrixConverter.cs
- ToolboxBitmapAttribute.cs
- OperatingSystem.cs
- XamlContextStack.cs
- BitStack.cs
- StrongNamePublicKeyBlob.cs
- MexBindingBindingCollectionElement.cs
- UIAgentAsyncParams.cs
- StreamingContext.cs
- MulticastDelegate.cs
- TimeoutValidationAttribute.cs
- IgnoreFileBuildProvider.cs
- InputMethodStateTypeInfo.cs
- Debug.cs
- AtomServiceDocumentSerializer.cs
- MapPathBasedVirtualPathProvider.cs
- WindowsGraphics.cs
- Stack.cs
- ModelUIElement3D.cs
- DoubleLinkList.cs
- DataList.cs
- DocumentXPathNavigator.cs
- CalloutQueueItem.cs
- ElementProxy.cs
- XmlNamespaceManager.cs
- RangeValidator.cs
- InstanceOwner.cs
- RichTextBoxConstants.cs
- NamespaceQuery.cs
- SqlDataReaderSmi.cs
- DecoderExceptionFallback.cs
- LabelLiteral.cs
- TemplateInstanceAttribute.cs
- Crc32.cs
- XmlResolver.cs
- NativeObjectSecurity.cs
- ToolStripDropDownClosingEventArgs.cs
- AxisAngleRotation3D.cs
- NativeCppClassAttribute.cs
- ForceCopyBuildProvider.cs
- PropertyGeneratedEventArgs.cs
- OpacityConverter.cs
- RegexRunner.cs
- ReflectionPermission.cs
- FrugalList.cs
- EnumerableRowCollection.cs
- XmlObjectSerializerReadContextComplex.cs
- CroppedBitmap.cs
- UnsafeNativeMethods.cs
- MissingMemberException.cs
- ADRoleFactoryConfiguration.cs
- Cursors.cs
- ListView.cs
- DataDesignUtil.cs
- PointCollectionValueSerializer.cs
- DeferredSelectedIndexReference.cs
- Evidence.cs
- TrackPointCollection.cs
- CountdownEvent.cs
- FontEmbeddingManager.cs
- CharAnimationBase.cs
- oledbmetadatacolumnnames.cs
- PageRouteHandler.cs
- DetailsViewUpdatedEventArgs.cs
- MappingException.cs
- complextypematerializer.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- MemberRelationshipService.cs
- ILGenerator.cs