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
- TimersDescriptionAttribute.cs
- XmlSchemaObjectCollection.cs
- ApplicationSettingsBase.cs
- XmlEncApr2001.cs
- BreakRecordTable.cs
- RowType.cs
- DateTimeSerializationSection.cs
- LinearGradientBrush.cs
- LocationReference.cs
- AlignmentYValidation.cs
- EventLogPermissionEntry.cs
- EncryptedHeader.cs
- AstTree.cs
- KeyPullup.cs
- FileDataSourceCache.cs
- ClipboardData.cs
- ToolStripPanel.cs
- ListViewSortEventArgs.cs
- WebPartConnectionsDisconnectVerb.cs
- ArraySortHelper.cs
- BaseResourcesBuildProvider.cs
- Timer.cs
- FormsAuthentication.cs
- BufferModeSettings.cs
- PointCollection.cs
- SerializerWriterEventHandlers.cs
- NewItemsContextMenuStrip.cs
- Logging.cs
- HandoffBehavior.cs
- IsolatedStoragePermission.cs
- HttpCapabilitiesSectionHandler.cs
- BasicKeyConstraint.cs
- DomainConstraint.cs
- UnsafeNativeMethodsMilCoreApi.cs
- CacheDependency.cs
- ManagementException.cs
- XmlNamespaceMapping.cs
- XmlEncodedRawTextWriter.cs
- SchemaImporter.cs
- EdmItemCollection.OcAssemblyCache.cs
- SafeThemeHandle.cs
- TemplateBuilder.cs
- SchemaImporter.cs
- AttributeCollection.cs
- ClientCredentialsSecurityTokenManager.cs
- PingReply.cs
- DataTableMappingCollection.cs
- StorageAssociationTypeMapping.cs
- XsdValidatingReader.cs
- CompiledRegexRunnerFactory.cs
- XmlSerializerFactory.cs
- FunctionUpdateCommand.cs
- Block.cs
- ApplicationSecurityManager.cs
- StoragePropertyMapping.cs
- GenericAuthenticationEventArgs.cs
- ScrollItemProviderWrapper.cs
- StaticExtension.cs
- PeerEndPoint.cs
- WebResponse.cs
- FastEncoderWindow.cs
- RegexMatch.cs
- BamlLocalizabilityResolver.cs
- RenderData.cs
- ResourceType.cs
- XsltQilFactory.cs
- SizeValueSerializer.cs
- nulltextnavigator.cs
- DbDataAdapter.cs
- TagPrefixInfo.cs
- cookieexception.cs
- WebPartDisplayMode.cs
- SqlDelegatedTransaction.cs
- DataGridTextBox.cs
- BaseCollection.cs
- CookieProtection.cs
- PropertyRecord.cs
- EntityDataSourceState.cs
- SqlClientPermission.cs
- SplayTreeNode.cs
- webproxy.cs
- PolicyLevel.cs
- SqlBinder.cs
- XmlDesigner.cs
- RepeaterItemEventArgs.cs
- ContainerUtilities.cs
- SqlProcedureAttribute.cs
- AppDomainProtocolHandler.cs
- ClientProtocol.cs
- DBSqlParserColumn.cs
- XmlNamespaceDeclarationsAttribute.cs
- DataGridRowDetailsEventArgs.cs
- Convert.cs
- Int32EqualityComparer.cs
- ButtonChrome.cs
- SupportingTokenBindingElement.cs
- OdbcException.cs
- SortedList.cs
- RangeValuePatternIdentifiers.cs
- TreeViewImageGenerator.cs