Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Collections / EmptyReadOnlyDictionaryInternal.cs / 1 / EmptyReadOnlyDictionaryInternal.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ListDictionaryInternal ** ** ** Purpose: List for exceptions. ** ** ===========================================================*/ namespace System.Collections { /// This is a simple implementation of IDictionary that is empty and readonly. [Serializable] internal sealed class EmptyReadOnlyDictionaryInternal: IDictionary { // Note that this class must be agile with respect to AppDomains. See its usage in // System.Exception to understand why this is the case. public EmptyReadOnlyDictionaryInternal() { } // IEnumerable members IEnumerator IEnumerable.GetEnumerator() { return new NodeEnumerator(); } // ICollection members public void CopyTo(Array array, int index) { if (array==null) throw new ArgumentNullException("array"); if (array.Rank != 1) throw new ArgumentException(Environment.GetResourceString("Arg_RankMultiDimNotSupported")); if (index < 0) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if ( array.Length - index < this.Count ) throw new ArgumentException( Environment.GetResourceString("ArgumentOutOfRange_Index"), "index"); // the actual copy is a NOP } public int Count { get { return 0; } } public Object SyncRoot { get { return this; } } public bool IsSynchronized { get { return false; } } // IDictionary members public Object this[Object key] { get { if (key == null) { throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key")); } return null; } set { if (key == null) { throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key")); } if (!key.GetType().IsSerializable) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "key"); if( (value != null) && (!value.GetType().IsSerializable ) ) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "value"); throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ReadOnly")); } } public ICollection Keys { get { return new Object[0]; } } public ICollection Values { get { return new Object[0]; } } public bool Contains(Object key) { return false; } public void Add(Object key, Object value) { if (key == null) { throw new ArgumentNullException("key", Environment.GetResourceString("ArgumentNull_Key")); } if (!key.GetType().IsSerializable) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "key" ); if( (value != null) && (!value.GetType().IsSerializable) ) throw new ArgumentException(Environment.GetResourceString("Argument_NotSerializable"), "value"); throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ReadOnly")); } public void Clear() { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ReadOnly")); } public bool IsReadOnly { get { return true; } } public bool IsFixedSize { get { return true; } } public IDictionaryEnumerator GetEnumerator() { return new NodeEnumerator(); } public void Remove(Object key) { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_ReadOnly")); } private sealed class NodeEnumerator : IDictionaryEnumerator { public NodeEnumerator() { } // IEnumerator members public bool MoveNext() { return false; } public Object Current { get { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } } public void Reset() { } // IDictionaryEnumerator members public Object Key { get { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } } public Object Value { get { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } } public DictionaryEntry Entry { get { throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen")); } } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SystemIPInterfaceStatistics.cs
- XmlSchemaGroupRef.cs
- ProcessRequestArgs.cs
- SchemaNamespaceManager.cs
- RelationshipEndCollection.cs
- GeneralTransform.cs
- Span.cs
- TypeExtensionConverter.cs
- MembershipSection.cs
- HttpCookie.cs
- XamlContextStack.cs
- IisTraceWebEventProvider.cs
- QueueException.cs
- XomlCompilerParameters.cs
- XmlSchemaSubstitutionGroup.cs
- WizardForm.cs
- BoundPropertyEntry.cs
- Set.cs
- xsdvalidator.cs
- PathFigureCollection.cs
- VirtualPathUtility.cs
- WindowsTab.cs
- EffectiveValueEntry.cs
- DataColumn.cs
- ZipIORawDataFileBlock.cs
- DataServiceResponse.cs
- Perspective.cs
- EdmValidator.cs
- HtmlControlDesigner.cs
- HybridCollection.cs
- TrustManagerMoreInformation.cs
- SafeCryptHandles.cs
- DataGridColumnsPage.cs
- SiteMapSection.cs
- DataBinding.cs
- MouseButton.cs
- FileChangesMonitor.cs
- FactoryId.cs
- HtmlInputHidden.cs
- DocumentAutomationPeer.cs
- CatalogZoneDesigner.cs
- LayoutTable.cs
- AutomationAttributeInfo.cs
- coordinator.cs
- SspiWrapper.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Matrix.cs
- InputLanguageManager.cs
- Transform.cs
- BooleanAnimationBase.cs
- WindowsButton.cs
- BaseDataListPage.cs
- smtppermission.cs
- Control.cs
- NativeCppClassAttribute.cs
- TableSectionStyle.cs
- EntityDataSourceStatementEditor.cs
- Privilege.cs
- BookmarkResumptionRecord.cs
- ConfigXmlComment.cs
- Accessible.cs
- KeyPullup.cs
- ByteStorage.cs
- HandoffBehavior.cs
- LostFocusEventManager.cs
- XmlSchemaNotation.cs
- TraceRecord.cs
- OleDbPropertySetGuid.cs
- ResourceManager.cs
- HTMLTagNameToTypeMapper.cs
- DataRowChangeEvent.cs
- GeneralTransform3D.cs
- PropertyPanel.cs
- Scheduling.cs
- EntityProviderFactory.cs
- DynamicDiscoSearcher.cs
- PixelFormatConverter.cs
- ImageKeyConverter.cs
- ContentControl.cs
- LogicalTreeHelper.cs
- SimpleMailWebEventProvider.cs
- MobileUITypeEditor.cs
- FormClosingEvent.cs
- SynchronizationLockException.cs
- ImportFileRequest.cs
- PublishLicense.cs
- ButtonFlatAdapter.cs
- EntryWrittenEventArgs.cs
- ValidationError.cs
- ObjectConverter.cs
- UIPermission.cs
- Stream.cs
- DataSourceControl.cs
- SecurityUtils.cs
- CurrentChangingEventArgs.cs
- ExtentJoinTreeNode.cs
- DeferredSelectedIndexReference.cs
- HMAC.cs
- DesignSurfaceCollection.cs
- HMAC.cs