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
- SafeFileMappingHandle.cs
- DataGridCellsPanel.cs
- RuleSettings.cs
- OrthographicCamera.cs
- MenuStrip.cs
- FileClassifier.cs
- DocumentsTrace.cs
- WriteTimeStream.cs
- RequestDescription.cs
- EventWaitHandleSecurity.cs
- OleDbRowUpdatedEvent.cs
- PropertyMapper.cs
- ReadOnlyAttribute.cs
- QuaternionAnimation.cs
- EditorBrowsableAttribute.cs
- StagingAreaInputItem.cs
- ClipboardData.cs
- StringConcat.cs
- EntityDataSourceDataSelection.cs
- RemoteWebConfigurationHost.cs
- Metadata.cs
- SqlProvider.cs
- LongValidatorAttribute.cs
- MappingItemCollection.cs
- ArgumentOutOfRangeException.cs
- DynamicPropertyReader.cs
- ZipIOModeEnforcingStream.cs
- SynchronizedDispatch.cs
- DataStreamFromComStream.cs
- CapabilitiesPattern.cs
- TrackingMemoryStreamFactory.cs
- AuthorizationPolicyTypeElementCollection.cs
- DispatcherObject.cs
- ProtectedConfigurationProviderCollection.cs
- DoubleAnimationUsingKeyFrames.cs
- ScrollEvent.cs
- BaseTemplateParser.cs
- AutomationPeer.cs
- SqlClientWrapperSmiStreamChars.cs
- SemanticResolver.cs
- GenerateTemporaryTargetAssembly.cs
- XMLUtil.cs
- TextLineBreak.cs
- ValueCollectionParameterReader.cs
- SizeChangedInfo.cs
- DataGridViewCellParsingEventArgs.cs
- SuppressIldasmAttribute.cs
- RunWorkerCompletedEventArgs.cs
- WindowsTokenRoleProvider.cs
- FilterableAttribute.cs
- SqlBulkCopyColumnMapping.cs
- CompilerHelpers.cs
- ConfigurationManagerInternalFactory.cs
- OperandQuery.cs
- ProcessModelInfo.cs
- CopyOfAction.cs
- Comparer.cs
- SyndicationDeserializer.cs
- ObjectDataSourceFilteringEventArgs.cs
- StrongNamePublicKeyBlob.cs
- TypeDefinition.cs
- AutoGeneratedField.cs
- MoveSizeWinEventHandler.cs
- WsiProfilesElementCollection.cs
- FormParameter.cs
- Graphics.cs
- KeyTimeConverter.cs
- StringComparer.cs
- MarkerProperties.cs
- EventHandlersStore.cs
- AnimationClock.cs
- CatalogUtil.cs
- AnnotationHighlightLayer.cs
- QilXmlReader.cs
- sortedlist.cs
- FillRuleValidation.cs
- XmlSchemaValidator.cs
- DataObjectCopyingEventArgs.cs
- ResXResourceReader.cs
- EventLog.cs
- TraceData.cs
- XmlCharType.cs
- CodeCommentStatementCollection.cs
- ValidatorCollection.cs
- RuntimeArgument.cs
- PathSegment.cs
- PhysicalAddress.cs
- contentDescriptor.cs
- ServiceDiscoveryElement.cs
- TagMapInfo.cs
- SHA256Managed.cs
- XmlChoiceIdentifierAttribute.cs
- AsyncResult.cs
- PeerFlooder.cs
- XmlDocumentSurrogate.cs
- VirtualDirectoryMapping.cs
- TryExpression.cs
- DefinitionBase.cs
- DataGridViewRowEventArgs.cs
- HwndSource.cs