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
- NavigationFailedEventArgs.cs
- SafeEventLogReadHandle.cs
- VisualTreeUtils.cs
- DocumentPageTextView.cs
- OperationAbortedException.cs
- SelectionRange.cs
- ToolStripPanelSelectionBehavior.cs
- TabControlCancelEvent.cs
- ControllableStoryboardAction.cs
- oledbmetadatacollectionnames.cs
- __FastResourceComparer.cs
- ValidationHelper.cs
- Splitter.cs
- RelationshipConverter.cs
- IndexedString.cs
- TrackingLocationCollection.cs
- MediaElementAutomationPeer.cs
- WebPartsPersonalization.cs
- ToolboxItemAttribute.cs
- Substitution.cs
- SourceSwitch.cs
- CompilerParameters.cs
- ButtonFieldBase.cs
- MsmqIntegrationBindingElement.cs
- ConfigXmlWhitespace.cs
- wgx_render.cs
- TreeNodeMouseHoverEvent.cs
- ZoneLinkButton.cs
- WebPartEditVerb.cs
- CheckStoreFileValidityRequest.cs
- FontCollection.cs
- MimePart.cs
- ColumnProvider.cs
- WebPartConnectionsEventArgs.cs
- ClientSideProviderDescription.cs
- XmlSchemaRedefine.cs
- DefaultAsyncDataDispatcher.cs
- ComboBoxRenderer.cs
- EntityTemplateFactory.cs
- MouseGesture.cs
- RemotingException.cs
- AsyncResult.cs
- SchemaDeclBase.cs
- WebPartMinimizeVerb.cs
- CounterSetInstanceCounterDataSet.cs
- CheckBoxList.cs
- TypeUsage.cs
- WebPartMenuStyle.cs
- EntryWrittenEventArgs.cs
- SimpleHandlerBuildProvider.cs
- ComboBoxRenderer.cs
- BitmapEffectInputData.cs
- DES.cs
- DiscoveryInnerClientManaged11.cs
- OdbcConnectionString.cs
- LinkedResourceCollection.cs
- ProcessHost.cs
- WebConfigurationManager.cs
- SoapHeader.cs
- SafeNativeMemoryHandle.cs
- OutputCacheSettings.cs
- AttachedProperty.cs
- DependencyPropertyConverter.cs
- AnchoredBlock.cs
- IncrementalReadDecoders.cs
- SecurityKeyType.cs
- DataServiceQueryException.cs
- BindingCompleteEventArgs.cs
- CellRelation.cs
- UnionExpr.cs
- SortAction.cs
- MessageBox.cs
- ImageListImage.cs
- SizeKeyFrameCollection.cs
- SqlDuplicator.cs
- IndentedWriter.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- TagMapCollection.cs
- RedirectionProxy.cs
- CompoundFileStorageReference.cs
- ReflectionTypeLoadException.cs
- XmlTextReaderImplHelpers.cs
- QueryableDataSourceView.cs
- webclient.cs
- ServiceOperationWrapper.cs
- TextServicesHost.cs
- ClientData.cs
- XhtmlBasicListAdapter.cs
- XmlTextReaderImplHelpers.cs
- AssemblyGen.cs
- ProcessThreadCollection.cs
- Gdiplus.cs
- XmlWrappingReader.cs
- ProfileInfo.cs
- DSASignatureDeformatter.cs
- Int64KeyFrameCollection.cs
- Imaging.cs
- XmlDocumentSchema.cs
- ComplexTypeEmitter.cs
- GroupQuery.cs