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
- SizeFConverter.cs
- TCPClient.cs
- NavigationProperty.cs
- TcpTransportSecurity.cs
- TabItem.cs
- CngAlgorithm.cs
- SmiEventSink_Default.cs
- SafeFindHandle.cs
- WorkflowMarkupSerializationProvider.cs
- SystemBrushes.cs
- PropertyTabAttribute.cs
- IconConverter.cs
- StickyNoteAnnotations.cs
- SafeNativeMethods.cs
- wgx_exports.cs
- MappingSource.cs
- JsonDeserializer.cs
- TaskFactory.cs
- SpellerError.cs
- MarkupExtensionSerializer.cs
- BitmapCodecInfoInternal.cs
- ToolTip.cs
- UIPermission.cs
- ImageMapEventArgs.cs
- ListBoxAutomationPeer.cs
- ImmutableObjectAttribute.cs
- XmlNotation.cs
- PropertyConverter.cs
- ITreeGenerator.cs
- InvalidPropValue.cs
- CheckBoxFlatAdapter.cs
- Config.cs
- SqlNodeAnnotations.cs
- AsymmetricSignatureDeformatter.cs
- SettingsPropertyCollection.cs
- SpAudioStreamWrapper.cs
- Int32AnimationUsingKeyFrames.cs
- XmlAnyAttributeAttribute.cs
- EntityUtil.cs
- ConfigurationValues.cs
- HttpProcessUtility.cs
- basenumberconverter.cs
- ListViewInsertedEventArgs.cs
- Int16Animation.cs
- UnmanagedBitmapWrapper.cs
- WsrmTraceRecord.cs
- XsltSettings.cs
- Scheduler.cs
- EntitySetBase.cs
- RepeaterItemCollection.cs
- Knowncolors.cs
- StackSpiller.cs
- XmlWriterDelegator.cs
- ColumnReorderedEventArgs.cs
- GridViewCommandEventArgs.cs
- DelegateSerializationHolder.cs
- XMLUtil.cs
- DispatchChannelSink.cs
- DefaultBinder.cs
- storepermissionattribute.cs
- FacetValues.cs
- TimeZoneInfo.cs
- TouchFrameEventArgs.cs
- TopClause.cs
- DataObject.cs
- PolicyUtility.cs
- MultiTrigger.cs
- SymbolMethod.cs
- BinaryNode.cs
- DecoderFallbackWithFailureFlag.cs
- HostUtils.cs
- VectorAnimation.cs
- RepeaterItem.cs
- CallContext.cs
- DataReceivedEventArgs.cs
- SqlNodeTypeOperators.cs
- Transform3D.cs
- TemplateBindingExpressionConverter.cs
- DbXmlEnabledProviderManifest.cs
- DispatcherSynchronizationContext.cs
- GraphicsContainer.cs
- SrgsDocument.cs
- Repeater.cs
- EntityDataSourceChangedEventArgs.cs
- ZeroOpNode.cs
- CharacterString.cs
- Button.cs
- WorkflowHostingResponseContext.cs
- GeneralTransformGroup.cs
- SelectionProcessor.cs
- SqlCacheDependency.cs
- DesignerDataTable.cs
- MsmqInputChannel.cs
- _RegBlobWebProxyDataBuilder.cs
- RtfControls.cs
- OdbcConnectionHandle.cs
- PenContexts.cs
- initElementDictionary.cs
- RecognizerInfo.cs
- StylusPlugInCollection.cs