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
- SecurityChannelFaultConverter.cs
- LockedBorderGlyph.cs
- GrammarBuilderBase.cs
- ColorDialog.cs
- FormatConvertedBitmap.cs
- wmiprovider.cs
- Label.cs
- TableRow.cs
- MulticastDelegate.cs
- MexNamedPipeBindingElement.cs
- _SslState.cs
- UnsafeNativeMethods.cs
- CompilerGlobalScopeAttribute.cs
- GridPattern.cs
- AssemblyAssociatedContentFileAttribute.cs
- SafeMemoryMappedViewHandle.cs
- SqlWorkflowPersistenceService.cs
- BuildManager.cs
- XmlDataFileEditor.cs
- ProviderConnectionPointCollection.cs
- Schema.cs
- DeferredTextReference.cs
- QilReplaceVisitor.cs
- SystemFonts.cs
- MimeBasePart.cs
- CatalogPartChrome.cs
- UmAlQuraCalendar.cs
- _ScatterGatherBuffers.cs
- PathGeometry.cs
- DetailsViewUpdatedEventArgs.cs
- followingquery.cs
- SqlRowUpdatingEvent.cs
- BrowserCapabilitiesCodeGenerator.cs
- SymbolDocumentGenerator.cs
- ClientType.cs
- OdbcParameter.cs
- LastQueryOperator.cs
- ServiceControllerDesigner.cs
- parserscommon.cs
- ScopelessEnumAttribute.cs
- SqlDataSourceEnumerator.cs
- XmlChildEnumerator.cs
- ConfigUtil.cs
- ViewDesigner.cs
- ErrorStyle.cs
- LazyTextWriterCreator.cs
- FormsAuthenticationTicket.cs
- WhitespaceRuleReader.cs
- InvalidProgramException.cs
- Zone.cs
- MailDefinition.cs
- ZipIOCentralDirectoryBlock.cs
- PersonalizationStateInfoCollection.cs
- LocationUpdates.cs
- SizeChangedInfo.cs
- ListViewItem.cs
- PropertyHelper.cs
- GraphicsPathIterator.cs
- DashStyle.cs
- InstanceLockQueryResult.cs
- SqlStatistics.cs
- BindableAttribute.cs
- SchemaTableColumn.cs
- BinaryMessageFormatter.cs
- MaskedTextProvider.cs
- ReliableDuplexSessionChannel.cs
- GenericTypeParameterBuilder.cs
- ToolboxBitmapAttribute.cs
- IDQuery.cs
- SQLInt32.cs
- Point4DValueSerializer.cs
- GridView.cs
- NameValueCollection.cs
- Rfc2898DeriveBytes.cs
- XamlHostingSection.cs
- XmlKeywords.cs
- ClientOptions.cs
- BooleanConverter.cs
- SafeProcessHandle.cs
- SaveFileDialog.cs
- SetUserPreferenceRequest.cs
- XsdBuildProvider.cs
- BmpBitmapEncoder.cs
- HostUtils.cs
- DescriptionAttribute.cs
- storepermissionattribute.cs
- CodeCastExpression.cs
- TraceLog.cs
- LinkUtilities.cs
- XXXOnTypeBuilderInstantiation.cs
- Point3DAnimation.cs
- QueryReaderSettings.cs
- EdmProperty.cs
- ProxyWebPartManager.cs
- Int32CAMarshaler.cs
- TypeReference.cs
- WebBrowserPermission.cs
- SessionParameter.cs
- CompensationExtension.cs
- SettingsSavedEventArgs.cs