Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ExtensionCollection.cs / 1 / ExtensionCollection.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.Serialization; public sealed class ExtensionCollection: SynchronizedCollection >, IExtensionCollection where T : IExtensibleObject { T owner; public ExtensionCollection(T owner) { if (owner == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("owner"); this.owner = owner; } public ExtensionCollection(T owner, object syncRoot) : base(syncRoot) { if (owner == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("owner"); this.owner = owner; } bool ICollection >.IsReadOnly { get { return false; } } protected override void ClearItems() { IExtension [] array; lock (this.SyncRoot) { array = new IExtension [this.Count]; this.CopyTo(array, 0); base.ClearItems(); foreach (IExtension extension in array) { extension.Detach(this.owner); } } } public E Find () { List > items = this.Items; lock (this.SyncRoot) { for (int i=this.Count-1; i>=0; i--) { IExtension item = items[i]; if (item is E) return (E)item; } } return default(E); } public Collection FindAll () { Collection result = new Collection (); List > items = this.Items; lock (this.SyncRoot) { for (int i=0; i item = items[i]; if (item is E) result.Add((E)item); } } return result; } protected override void InsertItem(int index, IExtension item) { if (item == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("item"); lock (this.SyncRoot) { item.Attach(this.owner); base.InsertItem(index, item); } } protected override void RemoveItem(int index) { lock (this.SyncRoot) { this.Items[index].Detach(this.owner); base.RemoveItem(index); } } protected override void SetItem(int index, IExtension item) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxCannotSetExtensionsByIndex))); } } } // 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
- DictionaryBase.cs
- IPEndPoint.cs
- versioninfo.cs
- SplineQuaternionKeyFrame.cs
- DbBuffer.cs
- XPathSingletonIterator.cs
- WebRequest.cs
- DoubleAnimation.cs
- VisualStyleElement.cs
- SqlDataSourceSelectingEventArgs.cs
- BamlLocalizationDictionary.cs
- SqlCaseSimplifier.cs
- FixedHyperLink.cs
- InvalidDocumentContentsException.cs
- NamespaceEmitter.cs
- HttpModuleActionCollection.cs
- UsernameTokenFactoryCredential.cs
- connectionpool.cs
- XmlNodeReader.cs
- MouseWheelEventArgs.cs
- CodeNamespace.cs
- httpapplicationstate.cs
- FixedSOMGroup.cs
- FrameworkPropertyMetadata.cs
- QueryOperationResponseOfT.cs
- MailSettingsSection.cs
- AsymmetricSignatureDeformatter.cs
- CompModSwitches.cs
- CapiHashAlgorithm.cs
- QilUnary.cs
- SqlReorderer.cs
- DesignSurfaceCollection.cs
- NetworkInformationException.cs
- KeysConverter.cs
- ConnectionOrientedTransportBindingElement.cs
- Merger.cs
- RuleSettings.cs
- COMException.cs
- SafeProcessHandle.cs
- ISAPIWorkerRequest.cs
- EventWaitHandle.cs
- DynamicDataResources.Designer.cs
- Rotation3D.cs
- ProfileBuildProvider.cs
- ControlsConfig.cs
- StylusPointDescription.cs
- XmlBaseWriter.cs
- ADConnectionHelper.cs
- DBCSCodePageEncoding.cs
- cookieexception.cs
- OptimizerPatterns.cs
- HttpListenerException.cs
- BoundField.cs
- InstanceOwner.cs
- ExtensionFile.cs
- ValidationSummary.cs
- ComboBoxItem.cs
- EditingMode.cs
- SystemIPInterfaceStatistics.cs
- PageRanges.cs
- WebPart.cs
- Shape.cs
- XmlExpressionDumper.cs
- DropShadowBitmapEffect.cs
- QilPatternFactory.cs
- Converter.cs
- ObjectAnimationUsingKeyFrames.cs
- MatrixValueSerializer.cs
- ErrorHandlerModule.cs
- MtomMessageEncodingBindingElement.cs
- WebPartConnectionsEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs
- ListViewItemEventArgs.cs
- HttpHeaderCollection.cs
- Win32Exception.cs
- NamespaceExpr.cs
- DataPagerField.cs
- ValueTypeFieldReference.cs
- SqlDependencyUtils.cs
- DurationConverter.cs
- DataComponentGenerator.cs
- HttpApplication.cs
- XmlReader.cs
- TemplateControl.cs
- WebMessageEncoderFactory.cs
- ObjectQuery_EntitySqlExtensions.cs
- AlphabeticalEnumConverter.cs
- BrushProxy.cs
- DocumentCollection.cs
- InkCanvas.cs
- M3DUtil.cs
- CheckBoxAutomationPeer.cs
- SerializationInfo.cs
- RoleManagerModule.cs
- DocumentsTrace.cs
- XmlDataDocument.cs
- SynchronizationFilter.cs
- InternalDispatchObject.cs
- QueryPageSettingsEventArgs.cs
- WebConfigurationHostFileChange.cs