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
- OpCellTreeNode.cs
- _ShellExpression.cs
- _AutoWebProxyScriptWrapper.cs
- keycontainerpermission.cs
- SuppressMessageAttribute.cs
- TargetControlTypeAttribute.cs
- SmtpMail.cs
- XPathNavigatorReader.cs
- ListManagerBindingsCollection.cs
- PropertyPathConverter.cs
- CodeDelegateInvokeExpression.cs
- SimpleApplicationHost.cs
- AccessKeyManager.cs
- RowUpdatedEventArgs.cs
- __Error.cs
- WebSysDefaultValueAttribute.cs
- HttpConfigurationSystem.cs
- SafeNativeMemoryHandle.cs
- KeyToListMap.cs
- XhtmlTextWriter.cs
- MethodBuilderInstantiation.cs
- ClientFactory.cs
- PropertyPath.cs
- SimpleType.cs
- XAMLParseException.cs
- ThemeDirectoryCompiler.cs
- ProcessModelInfo.cs
- RoutedEventValueSerializer.cs
- PropertyManager.cs
- XmlReflectionMember.cs
- CompensationDesigner.cs
- SqlWebEventProvider.cs
- ClientSettingsStore.cs
- InternalPolicyElement.cs
- BinaryObjectReader.cs
- WebDisplayNameAttribute.cs
- SynchronizedInputHelper.cs
- SharedPersonalizationStateInfo.cs
- WebPartCloseVerb.cs
- HttpModuleCollection.cs
- OleDbRowUpdatedEvent.cs
- AuthorizationRuleCollection.cs
- DataBoundControlAdapter.cs
- RegionInfo.cs
- odbcmetadatacolumnnames.cs
- SystemFonts.cs
- ConfigurationValidatorAttribute.cs
- Span.cs
- VirtualDirectoryMappingCollection.cs
- XmlHierarchicalDataSourceView.cs
- EntityViewGenerator.cs
- TypeUnloadedException.cs
- Win32SafeHandles.cs
- WindowVisualStateTracker.cs
- PageContentAsyncResult.cs
- RemotingConfigParser.cs
- ButtonField.cs
- CodeIdentifier.cs
- SecurityCapabilities.cs
- ActivityMarkupSerializationProvider.cs
- BrowserCapabilitiesFactory.cs
- HttpServerVarsCollection.cs
- MediaTimeline.cs
- SplineQuaternionKeyFrame.cs
- httpapplicationstate.cs
- WebBrowserDocumentCompletedEventHandler.cs
- DesignerSerializerAttribute.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- prefixendpointaddressmessagefiltertable.cs
- Timer.cs
- CompositeControl.cs
- HttpApplicationFactory.cs
- XPathConvert.cs
- ToolTipService.cs
- NavigationProperty.cs
- IPipelineRuntime.cs
- MouseBinding.cs
- RequestCacheManager.cs
- DataGridViewElement.cs
- JoinSymbol.cs
- OuterGlowBitmapEffect.cs
- Oid.cs
- PropertyTab.cs
- XPathEmptyIterator.cs
- DocumentXmlWriter.cs
- Focus.cs
- AnnouncementService.cs
- Pair.cs
- ServerType.cs
- ApplicationProxyInternal.cs
- CellLabel.cs
- DataBinding.cs
- QilStrConcatenator.cs
- LinkDesigner.cs
- Clause.cs
- PairComparer.cs
- PointCollection.cs
- RectangleF.cs
- SharedStatics.cs
- TimeManager.cs