Code:
/ DotNET / DotNET / 8.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
- CannotUnloadAppDomainException.cs
- DecimalAnimation.cs
- linebase.cs
- ACL.cs
- hebrewshape.cs
- GlobalizationAssembly.cs
- FileChangesMonitor.cs
- WebPartsPersonalization.cs
- TypedReference.cs
- LinkLabelLinkClickedEvent.cs
- ObjectDataProvider.cs
- SchemaMerger.cs
- TextModifier.cs
- TransformGroup.cs
- PerfProviderCollection.cs
- SqlGenerator.cs
- BufferedOutputStream.cs
- CreateUserWizardStep.cs
- CollectionViewProxy.cs
- UpDownBase.cs
- Convert.cs
- DataGridViewToolTip.cs
- CompiledQueryCacheKey.cs
- Parallel.cs
- ToolBar.cs
- DataControlButton.cs
- ToolboxItem.cs
- ParallelTimeline.cs
- ReferenceEqualityComparer.cs
- GeometryCombineModeValidation.cs
- CapabilitiesRule.cs
- GeneratedContractType.cs
- DataColumnMappingCollection.cs
- CompilerInfo.cs
- WorkflowMarkupElementEventArgs.cs
- StringInfo.cs
- WpfSharedXamlSchemaContext.cs
- WebResourceUtil.cs
- TimeoutException.cs
- DataRelation.cs
- TraceInternal.cs
- TypeListConverter.cs
- ETagAttribute.cs
- TextServicesCompartmentContext.cs
- BuilderPropertyEntry.cs
- LayoutEngine.cs
- PhoneCallDesigner.cs
- EdmPropertyAttribute.cs
- PerfCounters.cs
- NotImplementedException.cs
- Select.cs
- ThaiBuddhistCalendar.cs
- wgx_commands.cs
- InvalidPipelineStoreException.cs
- ListParaClient.cs
- ObjectDesignerDataSourceView.cs
- MediaSystem.cs
- SoapSchemaMember.cs
- XmlSchemaChoice.cs
- Nodes.cs
- RepeaterItem.cs
- DbMetaDataFactory.cs
- ExternalDataExchangeService.cs
- Double.cs
- GridViewRow.cs
- ListViewGroupConverter.cs
- TraceHwndHost.cs
- BitSet.cs
- RootBrowserWindowAutomationPeer.cs
- RegistrationServices.cs
- SQlBooleanStorage.cs
- FileDetails.cs
- RelatedImageListAttribute.cs
- DynamicFilter.cs
- NameValuePermission.cs
- ColorContext.cs
- FormsAuthenticationModule.cs
- PropertyValueChangedEvent.cs
- InkCanvasFeedbackAdorner.cs
- CalendarDayButton.cs
- httpserverutility.cs
- BindingNavigator.cs
- SqlUdtInfo.cs
- ProcessStartInfo.cs
- ComponentEditorForm.cs
- EntryPointNotFoundException.cs
- EmbeddedMailObjectsCollection.cs
- SimpleBitVector32.cs
- BitmapEffectOutputConnector.cs
- DefaultValueTypeConverter.cs
- MatrixTransform3D.cs
- RowType.cs
- ImageButton.cs
- Vector3DCollection.cs
- ObfuscationAttribute.cs
- X509Certificate.cs
- DoubleAnimationClockResource.cs
- Rectangle.cs
- HtmlInputImage.cs
- InterleavedZipPartStream.cs