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
- ValidatorUtils.cs
- EditBehavior.cs
- X509Extension.cs
- CultureNotFoundException.cs
- CompilerCollection.cs
- SafeViewOfFileHandle.cs
- OleDbRowUpdatingEvent.cs
- UnsafeNativeMethods.cs
- ValidationErrorCollection.cs
- XmlTextAttribute.cs
- EncoderReplacementFallback.cs
- ZipIOExtraFieldElement.cs
- MappingSource.cs
- AnimationClockResource.cs
- AnnotationObservableCollection.cs
- CoTaskMemHandle.cs
- SubMenuStyleCollection.cs
- ActivityExecutorDelegateInfo.cs
- BamlLocalizer.cs
- HtmlInputCheckBox.cs
- FilterQuery.cs
- ImplicitInputBrush.cs
- FileSystemEventArgs.cs
- TextDecoration.cs
- Pair.cs
- IfJoinedCondition.cs
- NamespaceMapping.cs
- TemplateEditingService.cs
- UiaCoreTypesApi.cs
- FixedTextBuilder.cs
- ContextMarshalException.cs
- ApplicationGesture.cs
- MaskedTextBoxDesigner.cs
- _Rfc2616CacheValidators.cs
- WebPartDisplayMode.cs
- Content.cs
- CustomAttributeSerializer.cs
- ImageInfo.cs
- CodeNamespaceCollection.cs
- exports.cs
- Events.cs
- DataMisalignedException.cs
- CodeAttributeArgumentCollection.cs
- NegatedCellConstant.cs
- Duration.cs
- TypedElement.cs
- StrongNameSignatureInformation.cs
- TextSelectionProcessor.cs
- WebPartUserCapability.cs
- ReversePositionQuery.cs
- CodeDirectoryCompiler.cs
- DataViewSetting.cs
- TextControl.cs
- ISessionStateStore.cs
- InheritablePropertyChangeInfo.cs
- MouseButtonEventArgs.cs
- RefreshPropertiesAttribute.cs
- SystemUdpStatistics.cs
- AxisAngleRotation3D.cs
- AssemblyCollection.cs
- basenumberconverter.cs
- SectionVisual.cs
- TypefaceMap.cs
- NotImplementedException.cs
- TextTreeFixupNode.cs
- PtsHelper.cs
- InlineUIContainer.cs
- DataGridViewComboBoxColumn.cs
- IIS7WorkerRequest.cs
- StateDesigner.TransitionInfo.cs
- ParamArrayAttribute.cs
- ApplicationServiceHelper.cs
- ConstraintStruct.cs
- Label.cs
- SQLDateTimeStorage.cs
- DataGridViewHitTestInfo.cs
- ClientScriptItem.cs
- SqlMetaData.cs
- DataBindingList.cs
- LinkArea.cs
- ScrollBarAutomationPeer.cs
- Fonts.cs
- SecurityElement.cs
- ProtectedConfigurationSection.cs
- CurrencyWrapper.cs
- ImageCollectionCodeDomSerializer.cs
- ChooseAction.cs
- DataGridColumnCollection.cs
- LinqExpressionNormalizer.cs
- WeakHashtable.cs
- TextLineResult.cs
- SimpleMailWebEventProvider.cs
- ListViewDeleteEventArgs.cs
- XmlSerializationReader.cs
- HtmlTernaryTree.cs
- AddInServer.cs
- ModelProperty.cs
- DataGridItemEventArgs.cs
- FullTrustAssembly.cs
- LogicalExpr.cs