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
- Preprocessor.cs
- HighContrastHelper.cs
- Model3DGroup.cs
- UrlPath.cs
- M3DUtil.cs
- DateTimeConstantAttribute.cs
- NameNode.cs
- FixedHyperLink.cs
- PnrpPermission.cs
- ToolboxItemCollection.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- XdrBuilder.cs
- StringDictionaryCodeDomSerializer.cs
- SmtpTransport.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ParameterRetriever.cs
- CurrencyWrapper.cs
- HttpStreamFormatter.cs
- TripleDES.cs
- VisualTreeHelper.cs
- NameGenerator.cs
- XmlChoiceIdentifierAttribute.cs
- FreeFormPanel.cs
- DragStartedEventArgs.cs
- ResourceDictionary.cs
- CompilerScope.Storage.cs
- FixedFlowMap.cs
- MediaSystem.cs
- QueryCacheEntry.cs
- RowUpdatedEventArgs.cs
- XmlTypeAttribute.cs
- AppSettingsReader.cs
- SmtpNegotiateAuthenticationModule.cs
- AssertFilter.cs
- SoapMessage.cs
- Char.cs
- XmlMemberMapping.cs
- Point4D.cs
- SchemaObjectWriter.cs
- Point.cs
- CollectionConverter.cs
- Int16AnimationBase.cs
- BevelBitmapEffect.cs
- PeerEndPoint.cs
- TextEffectCollection.cs
- Underline.cs
- OdbcConnectionPoolProviderInfo.cs
- ClaimComparer.cs
- NavigationFailedEventArgs.cs
- URLAttribute.cs
- TdsParserHelperClasses.cs
- DataGridViewBindingCompleteEventArgs.cs
- ContextStack.cs
- SqlMetaData.cs
- PropertyDescriptorCollection.cs
- TrackingServices.cs
- ParsedRoute.cs
- Int64KeyFrameCollection.cs
- XPathNodeInfoAtom.cs
- SqlUdtInfo.cs
- InputElement.cs
- XMLDiffLoader.cs
- EpmCustomContentSerializer.cs
- EventPropertyMap.cs
- EnumerableValidator.cs
- SynchronizedDispatch.cs
- FlowLayout.cs
- WebBrowser.cs
- Decoder.cs
- ContextInformation.cs
- DBConnectionString.cs
- DataServiceExpressionVisitor.cs
- NTAccount.cs
- AutoResizedEvent.cs
- SafeHandles.cs
- TablePattern.cs
- VectorCollection.cs
- PrimitiveType.cs
- MtomMessageEncoder.cs
- AuthorizationContext.cs
- DataGrid.cs
- TopClause.cs
- DataGridViewLayoutData.cs
- KeyValueConfigurationElement.cs
- HostProtectionPermission.cs
- FixedSOMTable.cs
- TreeNodeBindingCollection.cs
- TypeLibConverter.cs
- PixelFormat.cs
- ArraySubsetEnumerator.cs
- Int64.cs
- HttpContextWrapper.cs
- CultureInfoConverter.cs
- DetailsViewDeleteEventArgs.cs
- _Semaphore.cs
- ConnectionInterfaceCollection.cs
- ThemeDictionaryExtension.cs
- ItemsControlAutomationPeer.cs
- MessageQueue.cs
- GregorianCalendarHelper.cs