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
- BitmapImage.cs
- PixelFormats.cs
- XmlSchemaComplexContentExtension.cs
- ObjectItemCollection.cs
- DataGridParentRows.cs
- dbdatarecord.cs
- PointHitTestResult.cs
- ExpressionList.cs
- RSAOAEPKeyExchangeDeformatter.cs
- CaseInsensitiveComparer.cs
- ResourceReferenceExpressionConverter.cs
- Matrix.cs
- RadioButtonBaseAdapter.cs
- NavigationCommands.cs
- RC2.cs
- SymmetricCryptoHandle.cs
- OracleNumber.cs
- TemplateXamlTreeBuilder.cs
- CfgRule.cs
- MethodCallConverter.cs
- XmlSchemaInfo.cs
- SchemaAttDef.cs
- DefaultWorkflowLoaderService.cs
- ListSortDescriptionCollection.cs
- securitycriticaldataClass.cs
- HitTestParameters.cs
- KeyInterop.cs
- PeerNameResolver.cs
- ContentPlaceHolderDesigner.cs
- PaginationProgressEventArgs.cs
- ReceiveSecurityHeaderElementManager.cs
- CustomErrorCollection.cs
- TextElement.cs
- WsdlBuildProvider.cs
- PrintPreviewGraphics.cs
- CodeDirectionExpression.cs
- SafeCancelMibChangeNotify.cs
- _HelperAsyncResults.cs
- FileDialogCustomPlace.cs
- AutoGeneratedFieldProperties.cs
- SystemUdpStatistics.cs
- CodeCompileUnit.cs
- ObjectSet.cs
- TemplateManager.cs
- TypeConverter.cs
- DataTableMappingCollection.cs
- InstanceDataCollectionCollection.cs
- IdnElement.cs
- SerializationBinder.cs
- TTSEngineTypes.cs
- ProcessHostServerConfig.cs
- SHA256.cs
- ParallelTimeline.cs
- DataTablePropertyDescriptor.cs
- EventListenerClientSide.cs
- DataGridViewCellStateChangedEventArgs.cs
- MoveSizeWinEventHandler.cs
- Model3DGroup.cs
- InternalConfigRoot.cs
- CodeAccessPermission.cs
- EventProviderWriter.cs
- WindowsRegion.cs
- SelectionPatternIdentifiers.cs
- AttributeConverter.cs
- webeventbuffer.cs
- ImageCodecInfo.cs
- InvalidOleVariantTypeException.cs
- ExpressionConverter.cs
- GroupItemAutomationPeer.cs
- DataControlFieldHeaderCell.cs
- MenuItem.cs
- AssemblyFilter.cs
- SeekableReadStream.cs
- XmlSchemaDatatype.cs
- InstanceDataCollectionCollection.cs
- WSDualHttpSecurity.cs
- XmlSchemaElement.cs
- EntityTypeBase.cs
- GridViewCellAutomationPeer.cs
- SqlDataSourceQueryEditorForm.cs
- XsltCompileContext.cs
- SqlBooleanizer.cs
- ProxyWebPart.cs
- DataGridDesigner.cs
- Visual3D.cs
- NonVisualControlAttribute.cs
- ExpressionVisitor.cs
- EntityDataSourceContainerNameItem.cs
- ResourcesBuildProvider.cs
- SizeConverter.cs
- CqlLexerHelpers.cs
- AppDomainAttributes.cs
- HttpEncoderUtility.cs
- HealthMonitoringSection.cs
- IDispatchConstantAttribute.cs
- EntityUtil.cs
- ExtendedProtectionPolicy.cs
- DataSourceNameHandler.cs
- ScriptDescriptor.cs
- DataTableExtensions.cs