Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Configuration / System / Configuration / GenericEnumConverter.cs / 1 / GenericEnumConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Security.Permissions;
using System.Xml;
using System.Collections.Specialized;
using System.Globalization;
using System.ComponentModel;
using System.Security;
using System.Text;
namespace System.Configuration {
public sealed class GenericEnumConverter : ConfigurationConverterBase {
private Type _enumType;
public GenericEnumConverter(Type typeEnum) {
if (typeEnum == null) {
throw new ArgumentNullException("typeEnum");
}
_enumType = typeEnum;
}
public override object ConvertTo(ITypeDescriptorContext ctx, CultureInfo ci, object value, Type type) {
Debug.Assert(typeof(System.Enum).IsAssignableFrom(value.GetType()), "typeof(System.Enum).IsAssignableFrom(value.GetType())");
return value.ToString();
}
public override object ConvertFrom(ITypeDescriptorContext ctx, CultureInfo ci, object data) {
object result = null;
//
// For any error, throw the ArgumentException with SR.Invalid_enum_value
//
try {
string value = (string)data;
if (String.IsNullOrEmpty(value)) {
throw new Exception();
}
// Disallow numeric values for enums.
if (!String.IsNullOrEmpty(value) &&
(Char.IsDigit(value[0]) ||
(value[0] == '-') ||
(value[0] == '+'))) {
throw new Exception();
}
if (value != value.Trim()) { // throw if the value has whitespace
throw new Exception();
}
result = Enum.Parse(_enumType, value);
}
catch {
StringBuilder names = new StringBuilder();
foreach (string name in Enum.GetNames(_enumType)) {
if (names.Length != 0) {
names.Append(", ");
}
names.Append(name);
}
throw new ArgumentException(SR.GetString(SR.Invalid_enum_value, names.ToString()));
}
return result;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Security.Permissions;
using System.Xml;
using System.Collections.Specialized;
using System.Globalization;
using System.ComponentModel;
using System.Security;
using System.Text;
namespace System.Configuration {
public sealed class GenericEnumConverter : ConfigurationConverterBase {
private Type _enumType;
public GenericEnumConverter(Type typeEnum) {
if (typeEnum == null) {
throw new ArgumentNullException("typeEnum");
}
_enumType = typeEnum;
}
public override object ConvertTo(ITypeDescriptorContext ctx, CultureInfo ci, object value, Type type) {
Debug.Assert(typeof(System.Enum).IsAssignableFrom(value.GetType()), "typeof(System.Enum).IsAssignableFrom(value.GetType())");
return value.ToString();
}
public override object ConvertFrom(ITypeDescriptorContext ctx, CultureInfo ci, object data) {
object result = null;
//
// For any error, throw the ArgumentException with SR.Invalid_enum_value
//
try {
string value = (string)data;
if (String.IsNullOrEmpty(value)) {
throw new Exception();
}
// Disallow numeric values for enums.
if (!String.IsNullOrEmpty(value) &&
(Char.IsDigit(value[0]) ||
(value[0] == '-') ||
(value[0] == '+'))) {
throw new Exception();
}
if (value != value.Trim()) { // throw if the value has whitespace
throw new Exception();
}
result = Enum.Parse(_enumType, value);
}
catch {
StringBuilder names = new StringBuilder();
foreach (string name in Enum.GetNames(_enumType)) {
if (names.Length != 0) {
names.Append(", ");
}
names.Append(name);
}
throw new ArgumentException(SR.GetString(SR.Invalid_enum_value, names.ToString()));
}
return result;
}
}
}
// 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
- OracleDateTime.cs
- TableRowCollection.cs
- HeaderPanel.cs
- ConnectionStringSettings.cs
- SqlFileStream.cs
- LinkTarget.cs
- PartitionerStatic.cs
- baseaxisquery.cs
- SByte.cs
- RichTextBoxConstants.cs
- MexNamedPipeBindingElement.cs
- AdPostCacheSubstitution.cs
- wmiprovider.cs
- ConfigurationSettings.cs
- RepeatButton.cs
- SafeProcessHandle.cs
- TextReader.cs
- TableHeaderCell.cs
- cookiecollection.cs
- TextMetrics.cs
- SponsorHelper.cs
- FragmentQueryProcessor.cs
- SettingsPropertyNotFoundException.cs
- ChildChangedEventArgs.cs
- FileDialogPermission.cs
- ColorMatrix.cs
- RestHandlerFactory.cs
- FileUpload.cs
- PolyBezierSegment.cs
- InteropAutomationProvider.cs
- UndoManager.cs
- FileRecordSequence.cs
- SHA256.cs
- DateTimeSerializationSection.cs
- StringStorage.cs
- XmlMemberMapping.cs
- InputScopeAttribute.cs
- PnrpPeerResolver.cs
- TargetParameterCountException.cs
- SortFieldComparer.cs
- BitmapFrame.cs
- EventMappingSettingsCollection.cs
- SapiRecoContext.cs
- Number.cs
- brushes.cs
- InvalidComObjectException.cs
- StringPropertyBuilder.cs
- ChtmlFormAdapter.cs
- HMACRIPEMD160.cs
- XmlElementAttributes.cs
- DataTransferEventArgs.cs
- DataControlExtensions.cs
- GenerateScriptTypeAttribute.cs
- EditorPart.cs
- HyperLinkDataBindingHandler.cs
- FloatMinMaxAggregationOperator.cs
- ControlSerializer.cs
- HttpModuleActionCollection.cs
- ManagementExtension.cs
- BehaviorEditorPart.cs
- RecordsAffectedEventArgs.cs
- NodeLabelEditEvent.cs
- _LocalDataStoreMgr.cs
- userdatakeys.cs
- Authorization.cs
- ServiceModelActivationSectionGroup.cs
- CallbackDebugElement.cs
- DuplicateContext.cs
- PagedDataSource.cs
- Aggregates.cs
- ProxyRpc.cs
- VirtualizingPanel.cs
- RequestQueue.cs
- AdapterDictionary.cs
- DataBindEngine.cs
- cache.cs
- LedgerEntry.cs
- Button.cs
- Socket.cs
- X509CertificateChain.cs
- FieldToken.cs
- XsdValidatingReader.cs
- DesigntimeLicenseContext.cs
- MissingMemberException.cs
- WebBrowserContainer.cs
- WebControlsSection.cs
- DiscoveryServerProtocol.cs
- XmlSchemaComplexContentRestriction.cs
- figurelength.cs
- PtsHelper.cs
- BitmapEffectInput.cs
- DateTimeConstantAttribute.cs
- SamlAction.cs
- SqlAggregateChecker.cs
- SubclassTypeValidator.cs
- TextTreeRootNode.cs
- RowSpanVector.cs
- EntityContainer.cs
- EntryPointNotFoundException.cs
- EncryptedPackage.cs