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
- InterleavedZipPartStream.cs
- PersonalizationProviderHelper.cs
- _HeaderInfo.cs
- RenderCapability.cs
- XmlQueryStaticData.cs
- SplineQuaternionKeyFrame.cs
- ActiveXSite.cs
- EntityPropertyMappingAttribute.cs
- SQlBooleanStorage.cs
- DSASignatureDeformatter.cs
- RecordBuilder.cs
- ImplicitInputBrush.cs
- HtmlInputHidden.cs
- CrossContextChannel.cs
- invalidudtexception.cs
- GroupBoxRenderer.cs
- ScriptingSectionGroup.cs
- UntrustedRecipientException.cs
- FilterableAttribute.cs
- Stacktrace.cs
- Grant.cs
- RegionIterator.cs
- NewArrayExpression.cs
- XmlnsDefinitionAttribute.cs
- DataGridViewCellPaintingEventArgs.cs
- JsonWriter.cs
- XmlHelper.cs
- OdbcConnectionHandle.cs
- TreeNode.cs
- Image.cs
- XmlCharCheckingReader.cs
- ToolStripRenderEventArgs.cs
- EmptyQuery.cs
- DynamicEndpoint.cs
- Vector.cs
- ObjectDisposedException.cs
- MainMenu.cs
- wgx_sdk_version.cs
- HttpCachePolicyBase.cs
- ApplicationContext.cs
- ProfileEventArgs.cs
- SignedXmlDebugLog.cs
- MulticastIPAddressInformationCollection.cs
- SafeNativeMethods.cs
- SettingsPropertyCollection.cs
- ResXBuildProvider.cs
- CapabilitiesAssignment.cs
- DataGridState.cs
- VirtualPathProvider.cs
- DetailsViewDeleteEventArgs.cs
- DefaultTraceListener.cs
- ToolStripPanelRenderEventArgs.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- PlatformCulture.cs
- UserPreferenceChangingEventArgs.cs
- ToolStripRenderer.cs
- XamlDesignerSerializationManager.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- SignatureDescription.cs
- Translator.cs
- DBConnectionString.cs
- SettingsBindableAttribute.cs
- RootBuilder.cs
- PanelDesigner.cs
- DataContext.cs
- HandlerWithFactory.cs
- DiscreteKeyFrames.cs
- XmlSchemaObjectTable.cs
- ItemPager.cs
- sqlmetadatafactory.cs
- WebPartUtil.cs
- QueryConverter.cs
- WebPermission.cs
- FileRegion.cs
- XmlTextReaderImpl.cs
- DocumentPageHost.cs
- Light.cs
- Faults.cs
- messageonlyhwndwrapper.cs
- CompilationUtil.cs
- AccessedThroughPropertyAttribute.cs
- GridLength.cs
- CommandHelpers.cs
- SafeLibraryHandle.cs
- IdentityManager.cs
- ResourceCollectionInfo.cs
- WorkflowRuntimeServiceElementCollection.cs
- StreamWriter.cs
- ProfilePropertySettingsCollection.cs
- TextElementEnumerator.cs
- MethodSet.cs
- Grant.cs
- UrlMappingsSection.cs
- CorrelationTokenInvalidatedHandler.cs
- Expander.cs
- LassoHelper.cs
- ObjectItemLoadingSessionData.cs
- EntitySqlQueryState.cs
- TraceListeners.cs
- TextOnlyOutput.cs