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
- BitmapEffect.cs
- ClassData.cs
- recordstate.cs
- ValidatingReaderNodeData.cs
- ObjectDataProvider.cs
- WindowsHyperlink.cs
- CalculatedColumn.cs
- MetadataArtifactLoader.cs
- SecUtil.cs
- WizardForm.cs
- DataGridHeaderBorder.cs
- DomainUpDown.cs
- RightNameExpirationInfoPair.cs
- StyleConverter.cs
- DataBindingList.cs
- ToolStripButton.cs
- RenderDataDrawingContext.cs
- RayMeshGeometry3DHitTestResult.cs
- AutomationElementCollection.cs
- ContainerAction.cs
- ArrayItemValue.cs
- Encoder.cs
- DefaultValueConverter.cs
- SmtpTransport.cs
- FontFamily.cs
- XPathSingletonIterator.cs
- XsdValidatingReader.cs
- DPTypeDescriptorContext.cs
- CngUIPolicy.cs
- ActivityDesigner.cs
- UpdatePanel.cs
- StylusCaptureWithinProperty.cs
- PropertyGridDesigner.cs
- SafeViewOfFileHandle.cs
- DataGridLength.cs
- DataContext.cs
- UInt64.cs
- MatchingStyle.cs
- DataBoundControlHelper.cs
- DocumentEventArgs.cs
- Maps.cs
- HMACSHA384.cs
- DataSourceHelper.cs
- PerfCounterSection.cs
- MdiWindowListItemConverter.cs
- SpanIndex.cs
- ArrayListCollectionBase.cs
- GroupItem.cs
- TextStore.cs
- Interlocked.cs
- ForwardPositionQuery.cs
- TagPrefixInfo.cs
- RepeaterItemEventArgs.cs
- ModulesEntry.cs
- followingsibling.cs
- While.cs
- StickyNote.cs
- AsynchronousChannel.cs
- GradientStop.cs
- QueueSurrogate.cs
- ToolboxService.cs
- ChangePassword.cs
- InternalDuplexChannelFactory.cs
- CheckBoxDesigner.cs
- ReplacementText.cs
- ProcessThreadCollection.cs
- ServiceInfoCollection.cs
- JpegBitmapDecoder.cs
- CapabilitiesPattern.cs
- SrgsRule.cs
- MbpInfo.cs
- EntityTypeEmitter.cs
- DynamicUpdateCommand.cs
- InputLanguage.cs
- NameValuePermission.cs
- ChangeInterceptorAttribute.cs
- SmtpCommands.cs
- ConnectionsZoneDesigner.cs
- InstanceData.cs
- DataGridItemAutomationPeer.cs
- CheckBoxField.cs
- TypeExtensionSerializer.cs
- InstanceContextMode.cs
- MatrixUtil.cs
- SQLDecimalStorage.cs
- ColorTranslator.cs
- XmlSerializationReader.cs
- CorrelationTokenTypeConvertor.cs
- Span.cs
- RoleService.cs
- ResolveResponse.cs
- ArithmeticException.cs
- RootBrowserWindow.cs
- DeviceContexts.cs
- InputScopeNameConverter.cs
- MemberAccessException.cs
- Line.cs
- ValidationManager.cs
- MgmtConfigurationRecord.cs
- DataViewManagerListItemTypeDescriptor.cs