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
- Rotation3DAnimationBase.cs
- HatchBrush.cs
- listitem.cs
- CertificateManager.cs
- QueuePropertyVariants.cs
- Mutex.cs
- SqlTypesSchemaImporter.cs
- ObjectDataSourceStatusEventArgs.cs
- ResourcesBuildProvider.cs
- FileLogRecordEnumerator.cs
- safex509handles.cs
- AnimationException.cs
- CodeValidator.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ManageRequest.cs
- XmlReader.cs
- elementinformation.cs
- CaseInsensitiveComparer.cs
- MetadataCacheItem.cs
- SafeThemeHandle.cs
- X509SecurityTokenAuthenticator.cs
- DashStyle.cs
- GeneralTransform2DTo3D.cs
- AmbientProperties.cs
- EnterpriseServicesHelper.cs
- SlipBehavior.cs
- ServiceHostingEnvironmentSection.cs
- TemplateColumn.cs
- WindowsSlider.cs
- RemotingAttributes.cs
- ApplicationInterop.cs
- Win32Native.cs
- DefaultBinder.cs
- TemplateLookupAction.cs
- StringCollectionEditor.cs
- ViewStateModeByIdAttribute.cs
- ResXResourceWriter.cs
- ServiceNameCollection.cs
- Hashtable.cs
- EUCJPEncoding.cs
- TypedDataSetSchemaImporterExtension.cs
- NumericUpDownAcceleration.cs
- BitmapVisualManager.cs
- EncoderBestFitFallback.cs
- DataGridViewAutoSizeModeEventArgs.cs
- HebrewNumber.cs
- objectresult_tresulttype.cs
- StatementContext.cs
- CurrentChangingEventManager.cs
- DragEventArgs.cs
- ProcessModelSection.cs
- ValidatorCollection.cs
- ExceptionAggregator.cs
- GlyphsSerializer.cs
- DataColumnChangeEvent.cs
- CommonDialog.cs
- ReceiveParametersContent.cs
- XmlWrappingReader.cs
- InkCollectionBehavior.cs
- WebSysDefaultValueAttribute.cs
- XamlWriter.cs
- SafeRightsManagementSessionHandle.cs
- WinFormsSecurity.cs
- localization.cs
- SelectionList.cs
- LogFlushAsyncResult.cs
- MenuAutoFormat.cs
- CheckBoxList.cs
- RuntimeArgumentHandle.cs
- CounterSetInstance.cs
- XmlObjectSerializerWriteContextComplex.cs
- BypassElement.cs
- MediaTimeline.cs
- FormViewPageEventArgs.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- DesignBindingValueUIHandler.cs
- CompModSwitches.cs
- NetworkStream.cs
- WebPartCatalogCloseVerb.cs
- WebSysDescriptionAttribute.cs
- DateTime.cs
- QilParameter.cs
- TreeViewImageKeyConverter.cs
- DesignerMetadata.cs
- TextDecorationLocationValidation.cs
- Overlapped.cs
- CharacterBufferReference.cs
- SymmetricKeyWrap.cs
- HttpBufferlessInputStream.cs
- TextFormatterContext.cs
- DashStyle.cs
- OleDbDataAdapter.cs
- SystemIcmpV6Statistics.cs
- ProtocolElement.cs
- DateTimeOffset.cs
- GPRECTF.cs
- InputScopeAttribute.cs
- LinkUtilities.cs
- ChtmlPageAdapter.cs
- HttpRequestCacheValidator.cs