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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathBinder.cs
- FocusTracker.cs
- SoapUnknownHeader.cs
- CFGGrammar.cs
- DocumentViewer.cs
- MSAAEventDispatcher.cs
- BatchStream.cs
- PropertyGeneratedEventArgs.cs
- NavigationCommands.cs
- ManagementEventArgs.cs
- TableAdapterManagerNameHandler.cs
- MemberRestriction.cs
- _ListenerResponseStream.cs
- XPathItem.cs
- MenuScrollingVisibilityConverter.cs
- DataControlHelper.cs
- querybuilder.cs
- WebPartZoneCollection.cs
- HttpMethodAttribute.cs
- FillRuleValidation.cs
- LayoutTableCell.cs
- ChtmlTextWriter.cs
- UnsupportedPolicyOptionsException.cs
- PropertyChangingEventArgs.cs
- DiscoveryReferences.cs
- DataGridParentRows.cs
- LinqDataSourceContextEventArgs.cs
- TypeDescriptor.cs
- TransformGroup.cs
- CharacterBuffer.cs
- ConstructorNeedsTagAttribute.cs
- SmtpReplyReader.cs
- LogReservationCollection.cs
- Help.cs
- NameValuePair.cs
- PolicyLevel.cs
- CodeDomLocalizationProvider.cs
- Input.cs
- TypeLoadException.cs
- JoinElimination.cs
- AssemblyCache.cs
- AccessDataSourceDesigner.cs
- OdbcStatementHandle.cs
- SmtpDigestAuthenticationModule.cs
- XPathPatternBuilder.cs
- SafeArrayRankMismatchException.cs
- ArglessEventHandlerProxy.cs
- PenThread.cs
- HttpHandlersSection.cs
- XmlILStorageConverter.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Vector.cs
- DelimitedListTraceListener.cs
- DurableErrorHandler.cs
- NumericPagerField.cs
- OracleLob.cs
- SqlBooleanizer.cs
- DataGridViewLayoutData.cs
- MetadataCache.cs
- ObjectDataSource.cs
- ClassicBorderDecorator.cs
- NetTcpSecurity.cs
- DataStorage.cs
- DotExpr.cs
- ContextBase.cs
- Gdiplus.cs
- DataTablePropertyDescriptor.cs
- WebServiceBindingAttribute.cs
- SettingsProperty.cs
- LinearGradientBrush.cs
- ApplicationProxyInternal.cs
- ButtonColumn.cs
- DataTableTypeConverter.cs
- SqlDataSourceCustomCommandEditor.cs
- SmtpNetworkElement.cs
- ControlTemplate.cs
- DoubleLinkListEnumerator.cs
- Misc.cs
- SafeFindHandle.cs
- __Filters.cs
- EventDriven.cs
- GeneralTransformGroup.cs
- PerformanceCounterPermissionAttribute.cs
- SymbolEqualComparer.cs
- StatusBarItem.cs
- CodeTypeReferenceExpression.cs
- TypeSystemProvider.cs
- TrustManagerPromptUI.cs
- InputLangChangeRequestEvent.cs
- ImageButton.cs
- DataFormats.cs
- PropertyToken.cs
- GradientBrush.cs
- QilLoop.cs
- PageThemeCodeDomTreeGenerator.cs
- StaticFileHandler.cs
- PauseStoryboard.cs
- XmlQuerySequence.cs
- StylusCaptureWithinProperty.cs
- BackoffTimeoutHelper.cs