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
- Canvas.cs
- GPPOINT.cs
- ContainerTracking.cs
- StringWriter.cs
- PreservationFileReader.cs
- EntityDataSourceDesigner.cs
- ControlBindingsConverter.cs
- IdentityModelDictionary.cs
- ArrayTypeMismatchException.cs
- SemanticAnalyzer.cs
- ReadOnlyHierarchicalDataSourceView.cs
- MultiAsyncResult.cs
- TreeNodeStyle.cs
- BevelBitmapEffect.cs
- IIS7WorkerRequest.cs
- TextTreeUndoUnit.cs
- RunClient.cs
- SocketInformation.cs
- TransactionException.cs
- GridViewItemAutomationPeer.cs
- FileDialogCustomPlace.cs
- HtmlWindowCollection.cs
- TextBoxDesigner.cs
- EntityModelBuildProvider.cs
- MouseGestureValueSerializer.cs
- ToolStripSplitStackLayout.cs
- OleDbPermission.cs
- SoapSchemaMember.cs
- Classification.cs
- Qualifier.cs
- MsmqTransportReceiveParameters.cs
- SupportingTokenBindingElement.cs
- NullReferenceException.cs
- TextClipboardData.cs
- UIElementIsland.cs
- PlanCompiler.cs
- FileStream.cs
- ClipboardProcessor.cs
- FramingFormat.cs
- DrawingBrush.cs
- HttpListenerPrefixCollection.cs
- FrameworkElementAutomationPeer.cs
- ProfilePropertyMetadata.cs
- StorageRoot.cs
- OracleDataAdapter.cs
- BitmapEncoder.cs
- WaitHandleCannotBeOpenedException.cs
- ApplicationGesture.cs
- PolyBezierSegmentFigureLogic.cs
- ArithmeticException.cs
- followingsibling.cs
- CalendarDataBindingHandler.cs
- EventListener.cs
- RNGCryptoServiceProvider.cs
- FieldTemplateUserControl.cs
- KeyValuePair.cs
- MatcherBuilder.cs
- PatternMatchRules.cs
- ColumnBinding.cs
- PreProcessInputEventArgs.cs
- DataList.cs
- GuidTagList.cs
- DataSourceHelper.cs
- SignedXml.cs
- DocumentReferenceCollection.cs
- ScrollableControlDesigner.cs
- DateTimeOffset.cs
- TabletCollection.cs
- WindowsSpinner.cs
- HwndStylusInputProvider.cs
- Simplifier.cs
- RelationalExpressions.cs
- DataServiceQueryException.cs
- CodeGotoStatement.cs
- JsonReaderWriterFactory.cs
- RemotingAttributes.cs
- SubstitutionDesigner.cs
- AppDomainGrammarProxy.cs
- RootAction.cs
- CharacterMetrics.cs
- TraceUtils.cs
- ContentTextAutomationPeer.cs
- EventMemberCodeDomSerializer.cs
- MenuEventArgs.cs
- Label.cs
- Fonts.cs
- JpegBitmapEncoder.cs
- _AcceptOverlappedAsyncResult.cs
- PenThreadWorker.cs
- XmlSchemaSimpleTypeList.cs
- StylusButton.cs
- BoundsDrawingContextWalker.cs
- DefaultObjectMappingItemCollection.cs
- RenderTargetBitmap.cs
- LinqDataSourceSelectEventArgs.cs
- httpstaticobjectscollection.cs
- MouseBinding.cs
- NamespaceQuery.cs
- Menu.cs
- MouseOverProperty.cs