Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Collections / EmptyReadOnlyDictionaryInternal.cs / 1305376 / EmptyReadOnlyDictionaryInternal.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: EmptyReadOnlyDictionaryInternal
**
** [....]
**
**
** Purpose: List for exceptions.
**
**
===========================================================*/
using System.Diagnostics.Contracts;
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");
Contract.EndContractBlock();
// 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"));
}
Contract.EndContractBlock();
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");
Contract.EndContractBlock();
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");
Contract.EndContractBlock();
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LayoutManager.cs
- FolderBrowserDialog.cs
- ConfigurationFileMap.cs
- UpdateExpressionVisitor.cs
- ToggleButton.cs
- SqlReorderer.cs
- LingerOption.cs
- HtmlImage.cs
- GridViewItemAutomationPeer.cs
- AssociationEndMember.cs
- _AuthenticationState.cs
- Int16.cs
- AvTraceDetails.cs
- DbConnectionPoolCounters.cs
- TableRowsCollectionEditor.cs
- WindowsScrollBarBits.cs
- InfoCardRSACryptoProvider.cs
- Util.cs
- newitemfactory.cs
- RequestTimeoutManager.cs
- ConfigXmlWhitespace.cs
- XamlReader.cs
- KeySpline.cs
- WebColorConverter.cs
- WCFModelStrings.Designer.cs
- SmiGettersStream.cs
- XamlHostingConfiguration.cs
- ReadOnlyCollection.cs
- DefaultTextStoreTextComposition.cs
- XamlBuildTaskServices.cs
- Attribute.cs
- XamlFigureLengthSerializer.cs
- PermissionSetTriple.cs
- OleDbConnectionInternal.cs
- RequestQueryProcessor.cs
- AuthenticatedStream.cs
- VirtualPath.cs
- SerializationStore.cs
- XmlTypeAttribute.cs
- DateTimeConverter2.cs
- LogExtent.cs
- DependencyObjectType.cs
- SetterTriggerConditionValueConverter.cs
- path.cs
- DataGridAutomationPeer.cs
- IndexExpression.cs
- InstanceDataCollectionCollection.cs
- NameValueSectionHandler.cs
- PolicyStatement.cs
- XmlSchemaSimpleTypeList.cs
- WindowHelperService.cs
- DataFormats.cs
- DataPagerFieldItem.cs
- FunctionCommandText.cs
- COM2EnumConverter.cs
- SectionInformation.cs
- ExclusiveTcpListener.cs
- SiteMapSection.cs
- FixedSOMTableRow.cs
- Calendar.cs
- PrintDialogException.cs
- WsatExtendedInformation.cs
- PrinterSettings.cs
- HTTPNotFoundHandler.cs
- BoolExpression.cs
- FileDialogCustomPlace.cs
- ShaperBuffers.cs
- ScriptingWebServicesSectionGroup.cs
- SpeechRecognitionEngine.cs
- WebPartEditVerb.cs
- StructuredType.cs
- CheckBoxFlatAdapter.cs
- DesignerVerb.cs
- ListViewCancelEventArgs.cs
- DeviceSpecificDialogCachedState.cs
- CounterSample.cs
- ValidationPropertyAttribute.cs
- TraceLevelStore.cs
- NotCondition.cs
- EntitySqlQueryState.cs
- HttpFormatExtensions.cs
- CryptographicAttribute.cs
- AppearanceEditorPart.cs
- RawStylusSystemGestureInputReport.cs
- LocalizationComments.cs
- EmptyTextWriter.cs
- TextTreeText.cs
- ControlPaint.cs
- Span.cs
- XmlValueConverter.cs
- TableLayoutStyleCollection.cs
- LinkTarget.cs
- DataTable.cs
- FastPropertyAccessor.cs
- TreeNodeClickEventArgs.cs
- ChannelAcceptor.cs
- UdpChannelListener.cs
- Parallel.cs
- ErrorFormatterPage.cs
- BrowsableAttribute.cs