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
- CodeEventReferenceExpression.cs
- log.cs
- HtmlInputCheckBox.cs
- ContourSegment.cs
- AdCreatedEventArgs.cs
- WCFBuildProvider.cs
- PolicyValidationException.cs
- InputScope.cs
- HttpModulesSection.cs
- SID.cs
- ApplicationContext.cs
- Registry.cs
- ViewEventArgs.cs
- ProviderConnectionPoint.cs
- ServiceModelExtensionElement.cs
- InputReport.cs
- RtfToXamlLexer.cs
- ClrPerspective.cs
- ExportOptions.cs
- ProcessInfo.cs
- ThreadStartException.cs
- Message.cs
- ProbeMatchesMessage11.cs
- Simplifier.cs
- AudioLevelUpdatedEventArgs.cs
- DataControlFieldCell.cs
- MenuAdapter.cs
- XmlName.cs
- DetailsViewRowCollection.cs
- InputLangChangeEvent.cs
- EntityDataSourceWrapper.cs
- EdmProviderManifest.cs
- XmlSchemaDocumentation.cs
- InputDevice.cs
- PersonalizableAttribute.cs
- HttpResponseWrapper.cs
- SchemaElementDecl.cs
- MetabaseSettingsIis7.cs
- PanelStyle.cs
- __Error.cs
- ScriptControl.cs
- XmlAttribute.cs
- StaticSiteMapProvider.cs
- DataBoundControl.cs
- DataRowChangeEvent.cs
- HttpModuleAction.cs
- ComplexBindingPropertiesAttribute.cs
- ServiceDebugBehavior.cs
- ListComponentEditor.cs
- GACMembershipCondition.cs
- DbUpdateCommandTree.cs
- CodeEventReferenceExpression.cs
- ResponseBodyWriter.cs
- InstanceNotFoundException.cs
- ContainerControl.cs
- ResourceType.cs
- XhtmlTextWriter.cs
- Button.cs
- SQLGuid.cs
- DataBindEngine.cs
- RepeaterItem.cs
- CompilerResults.cs
- SpinLock.cs
- DispatcherBuilder.cs
- TokenizerHelper.cs
- initElementDictionary.cs
- DataConnectionHelper.cs
- TreeNodeCollection.cs
- StructuralCache.cs
- SiteMembershipCondition.cs
- Table.cs
- ObjectReaderCompiler.cs
- Parsers.cs
- VBCodeProvider.cs
- ActivityCodeGenerator.cs
- SymLanguageType.cs
- dataprotectionpermissionattribute.cs
- DSASignatureDeformatter.cs
- ItemAutomationPeer.cs
- RegexCompiler.cs
- StretchValidation.cs
- ILGenerator.cs
- SessionEndingCancelEventArgs.cs
- OleDbTransaction.cs
- ErrorView.xaml.cs
- DSASignatureFormatter.cs
- Barrier.cs
- Boolean.cs
- GcSettings.cs
- CodeChecksumPragma.cs
- PrePostDescendentsWalker.cs
- ProxyWebPart.cs
- WCFModelStrings.Designer.cs
- HttpResponse.cs
- ControlBindingsCollection.cs
- RecordBuilder.cs
- IpcServerChannel.cs
- SharedPerformanceCounter.cs
- ModifierKeysValueSerializer.cs
- DataGridGeneralPage.cs