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
- Context.cs
- ReadOnlyKeyedCollection.cs
- IdentityModelDictionary.cs
- smtppermission.cs
- SerializationStore.cs
- UpdateRecord.cs
- AsyncParams.cs
- ErrorProvider.cs
- BufferedResponseStream.cs
- ConcatQueryOperator.cs
- ComPlusSynchronizationContext.cs
- CapabilitiesUse.cs
- AutomationProperty.cs
- ObjectDataSourceFilteringEventArgs.cs
- UIntPtr.cs
- URLString.cs
- WmlObjectListAdapter.cs
- KeyConstraint.cs
- SqlMethodTransformer.cs
- DrawingVisual.cs
- XmlDataSourceNodeDescriptor.cs
- ComponentEditorPage.cs
- ParameterModifier.cs
- CompressStream.cs
- XamlToRtfWriter.cs
- BehaviorEditorPart.cs
- Point3DIndependentAnimationStorage.cs
- _NestedSingleAsyncResult.cs
- MediaContextNotificationWindow.cs
- unitconverter.cs
- ColorAnimation.cs
- ServiceSecurityAuditBehavior.cs
- DictionarySurrogate.cs
- CalculatedColumn.cs
- TypeToken.cs
- OdbcInfoMessageEvent.cs
- RegexCapture.cs
- CodeAttributeArgument.cs
- ThicknessAnimationUsingKeyFrames.cs
- Configuration.cs
- UnsafeNativeMethods.cs
- RSAOAEPKeyExchangeDeformatter.cs
- FlowLayout.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CorePropertiesFilter.cs
- ListQueryResults.cs
- FlagsAttribute.cs
- ReadOnlyNameValueCollection.cs
- ArgumentNullException.cs
- ComponentResourceManager.cs
- FunctionQuery.cs
- HostingEnvironment.cs
- DBConnection.cs
- SoapConverter.cs
- SuppressMergeCheckAttribute.cs
- baseaxisquery.cs
- GeneralTransform.cs
- SchemaContext.cs
- EntityModelSchemaGenerator.cs
- CompilationUtil.cs
- ReachPrintTicketSerializerAsync.cs
- ScriptReferenceEventArgs.cs
- Int64.cs
- ScriptDescriptor.cs
- TextFormatter.cs
- GridView.cs
- OLEDB_Enum.cs
- UndoManager.cs
- StylusEventArgs.cs
- WebBrowserPermission.cs
- InputReport.cs
- WinInetCache.cs
- Event.cs
- CodeConstructor.cs
- CircleHotSpot.cs
- serverconfig.cs
- HtmlControlPersistable.cs
- BypassElementCollection.cs
- ConfigXmlComment.cs
- X509CertificateCollection.cs
- TraceFilter.cs
- FrameworkElement.cs
- JournalEntry.cs
- OraclePermission.cs
- GeneralTransform2DTo3DTo2D.cs
- CacheRequest.cs
- NameSpaceExtractor.cs
- WmlTextBoxAdapter.cs
- XPathNode.cs
- BaseCollection.cs
- BCLDebug.cs
- ImageListUtils.cs
- PathFigure.cs
- DataRowExtensions.cs
- DataSourceControl.cs
- GridViewUpdateEventArgs.cs
- TextParagraphView.cs
- TableItemProviderWrapper.cs
- DESCryptoServiceProvider.cs
- ListViewItem.cs