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
- Animatable.cs
- ProjectionCamera.cs
- Socket.cs
- VariableExpressionConverter.cs
- XmlSerializableReader.cs
- ConfigXmlWhitespace.cs
- HandlerBase.cs
- RadioButtonFlatAdapter.cs
- CharacterBuffer.cs
- SapiRecognizer.cs
- ComponentResourceManager.cs
- BooleanFacetDescriptionElement.cs
- configsystem.cs
- ParsedAttributeCollection.cs
- Socket.cs
- safePerfProviderHandle.cs
- SystemSounds.cs
- HiddenFieldPageStatePersister.cs
- ClientData.cs
- ComponentResourceKeyConverter.cs
- EntityUtil.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- DataColumnCollection.cs
- PackageDocument.cs
- MailHeaderInfo.cs
- XmlExtensionFunction.cs
- CodeTypeMemberCollection.cs
- ApplicationTrust.cs
- FontWeight.cs
- XPathPatternParser.cs
- CodeNamespaceCollection.cs
- TypeElement.cs
- AudioFormatConverter.cs
- NativeRecognizer.cs
- MemoryFailPoint.cs
- ObjectHelper.cs
- Propagator.cs
- TextChange.cs
- TreeView.cs
- TableParaClient.cs
- SectionInput.cs
- HtmlDocument.cs
- FileUpload.cs
- TextTreeObjectNode.cs
- XmlToDatasetMap.cs
- Hyperlink.cs
- CommandEventArgs.cs
- MimeMapping.cs
- ErrorFormatterPage.cs
- PeerMaintainer.cs
- QilCloneVisitor.cs
- AssemblyHash.cs
- ElasticEase.cs
- ObjectDisposedException.cs
- CommandLibraryHelper.cs
- FixedSOMElement.cs
- IntSecurity.cs
- ForceCopyBuildProvider.cs
- PassportAuthentication.cs
- CompilerError.cs
- FixedSOMPageConstructor.cs
- SqlConnectionPoolProviderInfo.cs
- UrlMappingsSection.cs
- DataObjectMethodAttribute.cs
- TextParagraphCache.cs
- DeferredBinaryDeserializerExtension.cs
- XmlDataSource.cs
- XmlNamespaceManager.cs
- WebPartVerbCollection.cs
- SecurityUtils.cs
- RoleManagerModule.cs
- MappingException.cs
- TransportChannelFactory.cs
- SeverityFilter.cs
- NavigationProperty.cs
- RequestNavigateEventArgs.cs
- Avt.cs
- SyndicationSerializer.cs
- ModelFunctionTypeElement.cs
- ComponentSerializationService.cs
- TableHeaderCell.cs
- FontEditor.cs
- InputScope.cs
- SiteMapDataSource.cs
- SmtpNetworkElement.cs
- PropertyMapper.cs
- ElementFactory.cs
- VerificationException.cs
- COAUTHIDENTITY.cs
- Focus.cs
- ProcessHostFactoryHelper.cs
- X509ClientCertificateAuthenticationElement.cs
- NodeLabelEditEvent.cs
- CodeConstructor.cs
- ValidationPropertyAttribute.cs
- ErrorTableItemStyle.cs
- ResourceDisplayNameAttribute.cs
- WorkflowDesignerMessageFilter.cs
- Ticks.cs
- LogEntryUtils.cs