Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Configuration / System / Configuration / StringAttributeCollection.cs / 1305376 / StringAttributeCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Security.Permissions; using System.Collections.Generic; using System.Collections.Specialized; using System.Reflection; using System.Text; namespace System.Configuration { public sealed class CommaDelimitedStringCollection : StringCollection { private bool _Modified; private bool _ReadOnly; private string _OriginalString; // // Constructor // public CommaDelimitedStringCollection() { _ReadOnly = false; _Modified = false; _OriginalString = ToString(); } internal void FromString(string list) { char[] _delimiters = { ',' }; if (list != null) { string[] items = list.Split(_delimiters); foreach (string item in items) { string trimmedItem = item.Trim(); if (trimmedItem.Length != 0) { Add(item.Trim()); } } } _OriginalString = ToString(); _ReadOnly = false; _Modified = false; } public override string ToString() { string returnString = null; if (Count > 0) { StringBuilder sb = new StringBuilder(); foreach (string str in this) { ThrowIfContainsDelimiter(str); // Since the add methods are not virtual they could still add bad data // by casting the collection to a string collection. This check will catch // it before serialization, late is better than never. sb.Append(str.Trim()); sb.Append(','); } returnString = sb.ToString(); if (returnString.Length > 0) { returnString = returnString.Substring(0, returnString.Length - 1); } if (returnString.Length == 0) { returnString = null; } } return returnString; } private void ThrowIfReadOnly() { if (IsReadOnly == true) { throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_read_only)); } } private void ThrowIfContainsDelimiter(string value) { if (value.Contains(",")) { throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_value_cannot_contain,",")); } } public void SetReadOnly() { _ReadOnly = true; } public bool IsModified { get { return _Modified || (ToString() != _OriginalString); } } public new bool IsReadOnly { get { return _ReadOnly; } } // // Accessors // public new string this[int index] { get { return (string)base[index]; } set { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base[index] = value.Trim(); } } // // Methods // public new void Add(string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Add(value.Trim()); } public new void AddRange(string[] range) { ThrowIfReadOnly(); _Modified = true; foreach (string str in range) { ThrowIfContainsDelimiter(str); base.Add(str.Trim()); } } public new void Clear() { ThrowIfReadOnly(); _Modified = true; base.Clear(); } public new void Insert(int index, string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Insert(index, value.Trim()); } public new void Remove(string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Remove(value.Trim()); } // Clone // // Clone the object, to get back and object that we can modify // without changing the original object // public CommaDelimitedStringCollection Clone() { CommaDelimitedStringCollection copy; copy = new CommaDelimitedStringCollection(); // Copy all values foreach (string str in this) { copy.Add(str); } // Copy Attributes copy._Modified = false; copy._ReadOnly = _ReadOnly; copy._OriginalString = _OriginalString; return copy; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Security.Permissions; using System.Collections.Generic; using System.Collections.Specialized; using System.Reflection; using System.Text; namespace System.Configuration { public sealed class CommaDelimitedStringCollection : StringCollection { private bool _Modified; private bool _ReadOnly; private string _OriginalString; // // Constructor // public CommaDelimitedStringCollection() { _ReadOnly = false; _Modified = false; _OriginalString = ToString(); } internal void FromString(string list) { char[] _delimiters = { ',' }; if (list != null) { string[] items = list.Split(_delimiters); foreach (string item in items) { string trimmedItem = item.Trim(); if (trimmedItem.Length != 0) { Add(item.Trim()); } } } _OriginalString = ToString(); _ReadOnly = false; _Modified = false; } public override string ToString() { string returnString = null; if (Count > 0) { StringBuilder sb = new StringBuilder(); foreach (string str in this) { ThrowIfContainsDelimiter(str); // Since the add methods are not virtual they could still add bad data // by casting the collection to a string collection. This check will catch // it before serialization, late is better than never. sb.Append(str.Trim()); sb.Append(','); } returnString = sb.ToString(); if (returnString.Length > 0) { returnString = returnString.Substring(0, returnString.Length - 1); } if (returnString.Length == 0) { returnString = null; } } return returnString; } private void ThrowIfReadOnly() { if (IsReadOnly == true) { throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_read_only)); } } private void ThrowIfContainsDelimiter(string value) { if (value.Contains(",")) { throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_value_cannot_contain,",")); } } public void SetReadOnly() { _ReadOnly = true; } public bool IsModified { get { return _Modified || (ToString() != _OriginalString); } } public new bool IsReadOnly { get { return _ReadOnly; } } // // Accessors // public new string this[int index] { get { return (string)base[index]; } set { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base[index] = value.Trim(); } } // // Methods // public new void Add(string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Add(value.Trim()); } public new void AddRange(string[] range) { ThrowIfReadOnly(); _Modified = true; foreach (string str in range) { ThrowIfContainsDelimiter(str); base.Add(str.Trim()); } } public new void Clear() { ThrowIfReadOnly(); _Modified = true; base.Clear(); } public new void Insert(int index, string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Insert(index, value.Trim()); } public new void Remove(string value) { ThrowIfReadOnly(); ThrowIfContainsDelimiter(value); _Modified = true; base.Remove(value.Trim()); } // Clone // // Clone the object, to get back and object that we can modify // without changing the original object // public CommaDelimitedStringCollection Clone() { CommaDelimitedStringCollection copy; copy = new CommaDelimitedStringCollection(); // Copy all values foreach (string str in this) { copy.Add(str); } // Copy Attributes copy._Modified = false; copy._ReadOnly = _ReadOnly; copy._OriginalString = _OriginalString; return copy; } } } // 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
- WebPartConnectionsCancelVerb.cs
- SettingsPropertyCollection.cs
- ErrorLog.cs
- ExpressionDumper.cs
- CodeSnippetStatement.cs
- ColumnWidthChangedEvent.cs
- MouseOverProperty.cs
- UInt16.cs
- SqlVersion.cs
- FaultImportOptions.cs
- StorageComplexTypeMapping.cs
- TableFieldsEditor.cs
- ExpressionVisitor.cs
- CursorInteropHelper.cs
- MSAAWinEventWrap.cs
- EndOfStreamException.cs
- GeometryHitTestResult.cs
- GeneralTransform3DTo2DTo3D.cs
- WebConfigurationFileMap.cs
- JsonQNameDataContract.cs
- RangeBase.cs
- ResourceManagerWrapper.cs
- CodeSubDirectory.cs
- DesignerSerializationManager.cs
- DefaultAsyncDataDispatcher.cs
- DataGridViewBand.cs
- dsa.cs
- Matrix.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- PTUtility.cs
- ThicknessKeyFrameCollection.cs
- BlurBitmapEffect.cs
- DataConnectionHelper.cs
- GridEntry.cs
- XmlDictionaryString.cs
- ViewGenerator.cs
- XmlTextReaderImpl.cs
- DisplayClaim.cs
- MessageQueuePermissionAttribute.cs
- RangeValueProviderWrapper.cs
- CapabilitiesState.cs
- MissingMemberException.cs
- UpWmlMobileTextWriter.cs
- IIS7UserPrincipal.cs
- RequestCacheValidator.cs
- SecurityContext.cs
- RowsCopiedEventArgs.cs
- SimplePropertyEntry.cs
- ADConnectionHelper.cs
- SafeProcessHandle.cs
- XpsSerializationException.cs
- DispatcherExceptionFilterEventArgs.cs
- EmptyEnumerator.cs
- EntityDataSourceValidationException.cs
- PlatformNotSupportedException.cs
- XmlHierarchyData.cs
- ServerIdentity.cs
- StrokeFIndices.cs
- FilterRepeater.cs
- DbDeleteCommandTree.cs
- TriggerBase.cs
- DES.cs
- MarkerProperties.cs
- OutputChannel.cs
- Animatable.cs
- RichTextBoxConstants.cs
- ListBoxAutomationPeer.cs
- SchemaMapping.cs
- querybuilder.cs
- UrlPath.cs
- FormClosingEvent.cs
- LocalizabilityAttribute.cs
- ActivityCollectionMarkupSerializer.cs
- Stack.cs
- PropertyNames.cs
- ScrollChrome.cs
- DiffuseMaterial.cs
- SQLUtility.cs
- TransformerTypeCollection.cs
- BindingMemberInfo.cs
- ConfigurationException.cs
- CodeStatementCollection.cs
- XmlSerializerSection.cs
- MailBnfHelper.cs
- WebScriptEnablingElement.cs
- PinnedBufferMemoryStream.cs
- DbConnectionStringCommon.cs
- AspNetRouteServiceHttpHandler.cs
- DataGridItem.cs
- EntityDataSourceViewSchema.cs
- ItemAutomationPeer.cs
- PersonalizableTypeEntry.cs
- HtmlLink.cs
- Assembly.cs
- TemplateLookupAction.cs
- HashSet.cs
- NamedPipeConnectionPoolSettingsElement.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- SqlXml.cs
- ISAPIWorkerRequest.cs