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
- IMembershipProvider.cs
- CodeGen.cs
- XmlDocument.cs
- SelectionPattern.cs
- PasswordDeriveBytes.cs
- FileDialogCustomPlace.cs
- ParentUndoUnit.cs
- HtmlMeta.cs
- AutomationAttributeInfo.cs
- StreamGeometry.cs
- ImageCodecInfo.cs
- PropertyToken.cs
- SchemaObjectWriter.cs
- SchemaNamespaceManager.cs
- Material.cs
- WebBrowserSiteBase.cs
- TypeProvider.cs
- WebResourceAttribute.cs
- ListChangedEventArgs.cs
- MatrixAnimationUsingKeyFrames.cs
- QueueSurrogate.cs
- RemotingServices.cs
- XPathAncestorQuery.cs
- SchemaElementDecl.cs
- ProjectionNode.cs
- GridViewHeaderRowPresenter.cs
- Avt.cs
- DependentList.cs
- ResourceDescriptionAttribute.cs
- COM2ExtendedUITypeEditor.cs
- ErrorFormatter.cs
- ControlValuePropertyAttribute.cs
- SqlClientWrapperSmiStreamChars.cs
- SqlException.cs
- TemplateBindingExpressionConverter.cs
- XmlObjectSerializerReadContextComplexJson.cs
- HostedHttpRequestAsyncResult.cs
- RegularExpressionValidator.cs
- Util.cs
- DbResourceAllocator.cs
- PrimitiveCodeDomSerializer.cs
- BindingMAnagerBase.cs
- DynamicValidatorEventArgs.cs
- DataFormats.cs
- MexHttpBindingCollectionElement.cs
- StylusSystemGestureEventArgs.cs
- Cursors.cs
- GeneralTransform3DGroup.cs
- FontDriver.cs
- Animatable.cs
- GeneralTransformCollection.cs
- TextTreeUndo.cs
- EntityDataSourceSelectedEventArgs.cs
- SlipBehavior.cs
- ScrollViewerAutomationPeer.cs
- ConditionBrowserDialog.cs
- WmlControlAdapter.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- GeneralTransformCollection.cs
- BookmarkScope.cs
- PathNode.cs
- SharedDp.cs
- MultiBinding.cs
- OdbcParameterCollection.cs
- BinaryFormatter.cs
- SQLBytesStorage.cs
- BitmapVisualManager.cs
- WpfGeneratedKnownProperties.cs
- SqlWriter.cs
- QilChoice.cs
- _NetworkingPerfCounters.cs
- ObjectDisposedException.cs
- DataGridViewToolTip.cs
- CompositeFontFamily.cs
- XmlSchemaExporter.cs
- ToolStripDropDownItem.cs
- EmptyStringExpandableObjectConverter.cs
- PartBasedPackageProperties.cs
- _NetRes.cs
- WindowsTreeView.cs
- Compiler.cs
- WebPartAuthorizationEventArgs.cs
- DataRelationCollection.cs
- TransformerInfo.cs
- RegisteredExpandoAttribute.cs
- DataKeyArray.cs
- XmlAtomicValue.cs
- ValueChangedEventManager.cs
- FormsIdentity.cs
- PaperSize.cs
- KeyValuePair.cs
- ConfigurationValue.cs
- CharUnicodeInfo.cs
- BreakRecordTable.cs
- EnvelopedPkcs7.cs
- GridViewHeaderRowPresenter.cs
- MetadataPropertyAttribute.cs
- BasePattern.cs
- propertytag.cs
- Publisher.cs