Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Configuration / System / Configuration / StringAttributeCollection.cs / 1 / 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
- UIHelper.cs
- shaperfactory.cs
- CollectionBuilder.cs
- GB18030Encoding.cs
- HMACSHA256.cs
- SystemNetHelpers.cs
- HttpListenerPrefixCollection.cs
- LayoutTable.cs
- PersistenceParticipant.cs
- CallContext.cs
- FunctionDescription.cs
- DependsOnAttribute.cs
- OdbcInfoMessageEvent.cs
- RegionData.cs
- UserControl.cs
- AutomationIdentifier.cs
- AlphabeticalEnumConverter.cs
- PropertyTabAttribute.cs
- GraphicsState.cs
- SelectionHighlightInfo.cs
- WorkflowRequestContext.cs
- Propagator.Evaluator.cs
- _RequestCacheProtocol.cs
- SQLConvert.cs
- Renderer.cs
- PaintEvent.cs
- TypedAsyncResult.cs
- TextEncodedRawTextWriter.cs
- DataGridViewRowsAddedEventArgs.cs
- UnsafeNativeMethods.cs
- DEREncoding.cs
- ActivationArguments.cs
- ChooseAction.cs
- Compensate.cs
- IdnMapping.cs
- SiteMapHierarchicalDataSourceView.cs
- CacheHelper.cs
- TraceHandler.cs
- ByteStorage.cs
- CodeTryCatchFinallyStatement.cs
- OrthographicCamera.cs
- RegexGroup.cs
- ButtonAutomationPeer.cs
- ApplyImportsAction.cs
- AccessibilityHelperForXpWin2k3.cs
- SafeProcessHandle.cs
- Point3DCollection.cs
- MediaEntryAttribute.cs
- PerfCounters.cs
- MessageHeaderInfoTraceRecord.cs
- TextBoxAutomationPeer.cs
- HttpHandlerActionCollection.cs
- ProcessInputEventArgs.cs
- MarkupExtensionReturnTypeAttribute.cs
- TextRunCacheImp.cs
- SplineKeyFrames.cs
- EncryptedPackageFilter.cs
- BamlLocalizer.cs
- OracleBoolean.cs
- AssignDesigner.xaml.cs
- ApplicationGesture.cs
- HtmlSelect.cs
- AnnouncementEndpointElement.cs
- RegexCharClass.cs
- SslStreamSecurityElement.cs
- TransformDescriptor.cs
- ComponentRenameEvent.cs
- XmlSchemaSet.cs
- SqlClientPermission.cs
- SqlDataSourceFilteringEventArgs.cs
- StoryFragments.cs
- regiisutil.cs
- WindowsTitleBar.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- sqlstateclientmanager.cs
- FunctionDefinition.cs
- SiteMapSection.cs
- BehaviorEditorPart.cs
- MemberDescriptor.cs
- _AutoWebProxyScriptHelper.cs
- RemoteWebConfigurationHost.cs
- DataKeyCollection.cs
- FileAuthorizationModule.cs
- ExpressionLexer.cs
- DesignerDeviceConfig.cs
- SendReply.cs
- LocationSectionRecord.cs
- XmlStreamStore.cs
- ProgressChangedEventArgs.cs
- Odbc32.cs
- ObjectDataSourceDisposingEventArgs.cs
- SponsorHelper.cs
- EventArgs.cs
- TypeBrowserDialog.cs
- FormParameter.cs
- DataBinder.cs
- StylusEventArgs.cs
- MethodImplAttribute.cs
- HtmlFormParameterWriter.cs
- Rotation3DAnimationBase.cs