Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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")); } } } } } // 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
- SqlInfoMessageEvent.cs
- InkCanvasInnerCanvas.cs
- ListViewContainer.cs
- SamlConditions.cs
- MultilineStringConverter.cs
- ReverseQueryOperator.cs
- CaseInsensitiveHashCodeProvider.cs
- ConsumerConnectionPoint.cs
- UIElement.cs
- WinFormsUtils.cs
- ToolStripLabel.cs
- ValidationHelpers.cs
- ConfigurationPermission.cs
- GatewayIPAddressInformationCollection.cs
- LogReserveAndAppendState.cs
- NullableLongSumAggregationOperator.cs
- SpeechDetectedEventArgs.cs
- XmlSchemaExternal.cs
- ContainerSelectorActiveEvent.cs
- InstanceCompleteException.cs
- QilTernary.cs
- SizeAnimationClockResource.cs
- RowCache.cs
- MsdtcWrapper.cs
- SignedInfo.cs
- OleDbMetaDataFactory.cs
- DataGridColumn.cs
- DataGridDetailsPresenterAutomationPeer.cs
- ForwardPositionQuery.cs
- Rect.cs
- UnsafeNativeMethods.cs
- XhtmlTextWriter.cs
- ElementAction.cs
- TreeViewImageIndexConverter.cs
- MetabaseServerConfig.cs
- ICspAsymmetricAlgorithm.cs
- StylusPointProperty.cs
- SelectionEditingBehavior.cs
- DBNull.cs
- TagMapCollection.cs
- FragmentQueryProcessor.cs
- TextBoxAutomationPeer.cs
- KeyedHashAlgorithm.cs
- HtmlInputFile.cs
- ApplicationContext.cs
- TableColumn.cs
- ContextMenuService.cs
- Script.cs
- XPathNavigator.cs
- TraceEventCache.cs
- HelpKeywordAttribute.cs
- DataListItemEventArgs.cs
- RolePrincipal.cs
- XmlSchemaFacet.cs
- ExtensionQuery.cs
- DSGeneratorProblem.cs
- EntityDataSource.cs
- IPEndPoint.cs
- HtmlElementErrorEventArgs.cs
- UrlMappingsSection.cs
- TextModifierScope.cs
- SapiRecoContext.cs
- MarkedHighlightComponent.cs
- Baml2006ReaderSettings.cs
- ProgressiveCrcCalculatingStream.cs
- KeyBinding.cs
- AdjustableArrowCap.cs
- PolicyStatement.cs
- EntityDataSourceChangingEventArgs.cs
- XmlChoiceIdentifierAttribute.cs
- Matrix3DConverter.cs
- Interlocked.cs
- NamespaceQuery.cs
- ADRoleFactoryConfiguration.cs
- OpenFileDialog.cs
- XPathNodeHelper.cs
- XmlAnyAttributeAttribute.cs
- SymmetricAlgorithm.cs
- diagnosticsswitches.cs
- DependencyPropertyKey.cs
- CommonDialog.cs
- DoubleConverter.cs
- FormViewPagerRow.cs
- DrawingContextDrawingContextWalker.cs
- CodeBinaryOperatorExpression.cs
- DataGrid.cs
- SuppressMergeCheckAttribute.cs
- ApplicationTrust.cs
- GridViewUpdatedEventArgs.cs
- ButtonChrome.cs
- VisualProxy.cs
- ComEventsInfo.cs
- CodePageUtils.cs
- XmlSchemaAnyAttribute.cs
- SynchronizingStream.cs
- PerformanceCounterCategory.cs
- PropertyInformation.cs
- VirtualizingPanel.cs
- ByteAnimation.cs
- HtmlElementErrorEventArgs.cs