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
- SecurityAlgorithmSuite.cs
- BitSet.cs
- ColorConverter.cs
- ObjectDataSourceView.cs
- WindowsTooltip.cs
- ObjectDataSourceDisposingEventArgs.cs
- ArraySet.cs
- InstancePersistenceContext.cs
- IgnoreSection.cs
- ContentType.cs
- HtmlInputFile.cs
- PointLight.cs
- XmlWrappingReader.cs
- ListViewHitTestInfo.cs
- ActivitySurrogate.cs
- Attribute.cs
- MessageVersion.cs
- OleDbFactory.cs
- DataTableCollection.cs
- DescriptionAttribute.cs
- ToolStripControlHost.cs
- CompiledXpathExpr.cs
- RegexGroup.cs
- ManipulationInertiaStartingEventArgs.cs
- EventArgs.cs
- MethodBuilderInstantiation.cs
- MessageHeaderException.cs
- WindowsGraphics.cs
- AsyncPostBackErrorEventArgs.cs
- MonitoringDescriptionAttribute.cs
- ComUdtElementCollection.cs
- XmlElementAttributes.cs
- BeginCreateSecurityTokenRequest.cs
- NativeRightsManagementAPIsStructures.cs
- RandomNumberGenerator.cs
- GroupPartitionExpr.cs
- storepermissionattribute.cs
- ContentPosition.cs
- HtmlDocument.cs
- StreamGeometry.cs
- PublisherMembershipCondition.cs
- BridgeDataReader.cs
- configsystem.cs
- DataStreamFromComStream.cs
- _ListenerResponseStream.cs
- SmtpCommands.cs
- NodeFunctions.cs
- SpotLight.cs
- AlignmentYValidation.cs
- TemplateEditingService.cs
- CriticalFinalizerObject.cs
- CodeMethodReturnStatement.cs
- PackageFilter.cs
- EarlyBoundInfo.cs
- ImageFormatConverter.cs
- _ChunkParse.cs
- TypefaceMap.cs
- CryptoHandle.cs
- EncryptedKey.cs
- XsltOutput.cs
- HostingPreferredMapPath.cs
- DataTablePropertyDescriptor.cs
- CategoryAttribute.cs
- SimpleApplicationHost.cs
- CellRelation.cs
- TextRangeEditTables.cs
- PathSegmentCollection.cs
- BufferedGraphics.cs
- GetWorkflowTree.cs
- ExpressionHelper.cs
- EntityDataSourceView.cs
- Point4DValueSerializer.cs
- EpmCustomContentDeSerializer.cs
- PageContentCollection.cs
- SchemaImporter.cs
- RepeatButton.cs
- DoubleAnimation.cs
- WebPartVerbCollection.cs
- ListViewTableRow.cs
- SplayTreeNode.cs
- CellPartitioner.cs
- UmAlQuraCalendar.cs
- MergePropertyDescriptor.cs
- entitydatasourceentitysetnameconverter.cs
- SessionStateSection.cs
- CodeComment.cs
- TraceEventCache.cs
- DbModificationCommandTree.cs
- RowType.cs
- DataFormat.cs
- ListItemCollection.cs
- HttpListenerResponse.cs
- sapiproxy.cs
- HostingPreferredMapPath.cs
- DataGridViewButtonCell.cs
- DecimalAnimationBase.cs
- ThaiBuddhistCalendar.cs
- ThreadAttributes.cs
- ActivatedMessageQueue.cs
- TableAdapterManagerHelper.cs