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
- Module.cs
- UInt16Converter.cs
- TextBoxAutomationPeer.cs
- ScrollContentPresenter.cs
- RotateTransform3D.cs
- WebPartConnectionsConfigureVerb.cs
- SchemaInfo.cs
- Page.cs
- DependencyObjectType.cs
- LogFlushAsyncResult.cs
- BitArray.cs
- InstanceDataCollectionCollection.cs
- ObjectAssociationEndMapping.cs
- FixedSOMTableRow.cs
- CalendarTable.cs
- PingReply.cs
- UserControl.cs
- X509RecipientCertificateServiceElement.cs
- ModelItem.cs
- TcpTransportElement.cs
- DataMemberFieldEditor.cs
- NetCodeGroup.cs
- TokenBasedSetEnumerator.cs
- TextModifierScope.cs
- Matrix3DValueSerializer.cs
- BrowserCapabilitiesFactory.cs
- XmlTextReader.cs
- TreeNodeClickEventArgs.cs
- EntityDataSourceDataSelection.cs
- AssemblyInfo.cs
- RequiredAttributeAttribute.cs
- DrawTreeNodeEventArgs.cs
- DataGridViewCellCancelEventArgs.cs
- DirtyTextRange.cs
- Registry.cs
- XPathNodeIterator.cs
- XmlFormatExtensionPointAttribute.cs
- FormatterServices.cs
- SqlDependencyUtils.cs
- RootProjectionNode.cs
- FloatAverageAggregationOperator.cs
- ProtocolsConfigurationEntry.cs
- BamlCollectionHolder.cs
- XmlSchemaDocumentation.cs
- AlternateView.cs
- XmlSortKeyAccumulator.cs
- Material.cs
- FigureParaClient.cs
- MarkupCompiler.cs
- InputChannel.cs
- XamlPathDataSerializer.cs
- ProtocolsConfiguration.cs
- ResourceDictionary.cs
- ValidatingReaderNodeData.cs
- ConnectionStringsExpressionBuilder.cs
- SqlDataSourceSelectingEventArgs.cs
- DataObjectCopyingEventArgs.cs
- ScrollChrome.cs
- TabItemAutomationPeer.cs
- SetterBaseCollection.cs
- GeometryModel3D.cs
- ImmutableCollection.cs
- WindowsFormsLinkLabel.cs
- FontUnit.cs
- QilStrConcat.cs
- TileModeValidation.cs
- TreeNodeBindingCollection.cs
- _BufferOffsetSize.cs
- DLinqColumnProvider.cs
- Messages.cs
- LinkLabelLinkClickedEvent.cs
- XmlTextWriter.cs
- TextBoxBase.cs
- PropertyMap.cs
- BinaryFormatterWriter.cs
- GridItemCollection.cs
- BatchParser.cs
- OdbcHandle.cs
- RepeaterCommandEventArgs.cs
- EventMappingSettings.cs
- XmlNodeList.cs
- TextTreeObjectNode.cs
- SqlPersonalizationProvider.cs
- ProviderUtil.cs
- MultiSelectRootGridEntry.cs
- StylusOverProperty.cs
- CodeDirectoryCompiler.cs
- MatchAttribute.cs
- XmlExpressionDumper.cs
- DataGridViewColumnConverter.cs
- ErrorHandler.cs
- TraceHwndHost.cs
- TemplateNameScope.cs
- Int32CollectionValueSerializer.cs
- TemplateField.cs
- MemberInitExpression.cs
- JapaneseCalendar.cs
- ObjectAnimationUsingKeyFrames.cs
- Transform.cs
- ChangePassword.cs