Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Collections / CollectionBase.cs / 1 / CollectionBase.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //------------------------------------------------------------------------------ //----------------------------------------------------------------------------- namespace System.Collections { using System; // Useful base class for typed read/write collections where items derive from object [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public abstract class CollectionBase : IList { ArrayList list; protected CollectionBase() { list = new ArrayList(); } protected CollectionBase(int capacity) { list = new ArrayList(capacity); } protected ArrayList InnerList { get { if (list == null) list = new ArrayList(); return list; } } protected IList List { get { return (IList)this; } } [System.Runtime.InteropServices.ComVisible(false)] public int Capacity { get { return InnerList.Capacity; } set { InnerList.Capacity = value; } } public int Count { get { return list == null ? 0 : list.Count; } } public void Clear() { OnClear(); InnerList.Clear(); OnClearComplete(); } public void RemoveAt(int index) { if (index < 0 || index >= InnerList.Count) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_Index")); Object temp = InnerList[index]; OnValidate(temp); OnRemove(index, temp); InnerList.RemoveAt(index); try { OnRemoveComplete(index, temp); } catch { InnerList.Insert(index, temp); throw; } } bool IList.IsReadOnly { get { return InnerList.IsReadOnly; } } bool IList.IsFixedSize { get { return InnerList.IsFixedSize; } } bool ICollection.IsSynchronized { get { return InnerList.IsSynchronized; } } Object ICollection.SyncRoot { get { return InnerList.SyncRoot; } } void ICollection.CopyTo(Array array, int index) { InnerList.CopyTo(array, index); } Object IList.this[int index] { get { if (index < 0 || index >= InnerList.Count) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_Index")); return InnerList[index]; } set { if (index < 0 || index >= InnerList.Count) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_Index")); OnValidate(value); Object temp = InnerList[index]; OnSet(index, temp, value); InnerList[index] = value; try { OnSetComplete(index, temp, value); } catch { InnerList[index] = temp; throw; } } } bool IList.Contains(Object value) { return InnerList.Contains(value); } int IList.Add(Object value) { OnValidate(value); OnInsert(InnerList.Count, value); int index = InnerList.Add(value); try { OnInsertComplete(index, value); } catch { InnerList.RemoveAt(index); throw; } return index; } void IList.Remove(Object value) { OnValidate(value); int index = InnerList.IndexOf(value); if (index < 0) throw new ArgumentException(Environment.GetResourceString("Arg_RemoveArgNotFound")); OnRemove(index, value); InnerList.RemoveAt(index); try{ OnRemoveComplete(index, value); } catch { InnerList.Insert(index, value); throw; } } int IList.IndexOf(Object value) { return InnerList.IndexOf(value); } void IList.Insert(int index, Object value) { if (index < 0 || index > InnerList.Count) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_Index")); OnValidate(value); OnInsert(index, value); InnerList.Insert(index, value); try { OnInsertComplete(index, value); } catch { InnerList.RemoveAt(index); throw; } } public IEnumerator GetEnumerator() { return InnerList.GetEnumerator(); } protected virtual void OnSet(int index, Object oldValue, Object newValue) { } protected virtual void OnInsert(int index, Object value) { } protected virtual void OnClear() { } protected virtual void OnRemove(int index, Object value) { } protected virtual void OnValidate(Object value) { if (value == null) throw new ArgumentNullException("value"); } protected virtual void OnSetComplete(int index, Object oldValue, Object newValue) { } protected virtual void OnInsertComplete(int index, Object value) { } protected virtual void OnClearComplete() { } protected virtual void OnRemoveComplete(int index, Object value) { } } } // 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
- TextServicesPropertyRanges.cs
- ConnectionPoolManager.cs
- DesignerAdapterAttribute.cs
- util.cs
- ResponseBodyWriter.cs
- EnumBuilder.cs
- PeerCredential.cs
- SmtpMail.cs
- FunctionQuery.cs
- EraserBehavior.cs
- SQLBoolean.cs
- EventLogPermissionEntryCollection.cs
- Drawing.cs
- WebHttpSecurityElement.cs
- ToolBarButton.cs
- ResumeStoryboard.cs
- PackagePartCollection.cs
- UIElement3D.cs
- DataGridViewCellStyleChangedEventArgs.cs
- cookiecontainer.cs
- TrailingSpaceComparer.cs
- MappingMetadataHelper.cs
- EmissiveMaterial.cs
- EdgeProfileValidation.cs
- TemplateKeyConverter.cs
- ElementMarkupObject.cs
- WaitHandleCannotBeOpenedException.cs
- LoadGrammarCompletedEventArgs.cs
- XmlILOptimizerVisitor.cs
- KeyMatchBuilder.cs
- DependencyObjectCodeDomSerializer.cs
- DataAccessException.cs
- SoapServerMethod.cs
- CodeTryCatchFinallyStatement.cs
- XmlElementList.cs
- FixedDocument.cs
- Sequence.cs
- WindowInteractionStateTracker.cs
- ToolStripContainer.cs
- TabItemAutomationPeer.cs
- AdministrationHelpers.cs
- NameObjectCollectionBase.cs
- AccessorTable.cs
- SmtpDigestAuthenticationModule.cs
- ClientScriptManager.cs
- CodeObjectCreateExpression.cs
- AppDomainProtocolHandler.cs
- FormsAuthenticationUser.cs
- FixedSOMTable.cs
- UnicodeEncoding.cs
- SoapSchemaImporter.cs
- UniqueIdentifierService.cs
- OracleInfoMessageEventArgs.cs
- ToolBarTray.cs
- DefaultPropertyAttribute.cs
- MultiDataTrigger.cs
- DataProtection.cs
- LinkedResource.cs
- ExtensionFile.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ContextMenuService.cs
- SchemaType.cs
- FormConverter.cs
- ImportCatalogPart.cs
- NativeMethods.cs
- SmiRecordBuffer.cs
- TableLayoutSettings.cs
- SecurityTokenSerializer.cs
- CharacterMetrics.cs
- DesigntimeLicenseContext.cs
- ConfigViewGenerator.cs
- InfoCardSymmetricCrypto.cs
- Faults.cs
- BmpBitmapDecoder.cs
- TypeConverterAttribute.cs
- SqlAliasesReferenced.cs
- DictionarySectionHandler.cs
- ObjectReaderCompiler.cs
- StrokeNodeOperations2.cs
- StackBuilderSink.cs
- AttachmentCollection.cs
- OleDbStruct.cs
- DateTimeParse.cs
- DocumentViewerBase.cs
- PathSegment.cs
- ImmutableObjectAttribute.cs
- MetabaseSettings.cs
- Version.cs
- ComponentManagerBroker.cs
- ApplicationActivator.cs
- XmlCodeExporter.cs
- AspNetHostingPermission.cs
- DocumentOrderComparer.cs
- DecoratedNameAttribute.cs
- ResourceWriter.cs
- AssemblyInfo.cs
- PackageStore.cs
- MbpInfo.cs
- SqlProviderUtilities.cs
- AbandonedMutexException.cs