Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / unitconverter.cs / 1 / unitconverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;
using System.Security.Permissions;
using System.Web.Util;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class UnitConverter : TypeConverter {
///
///
/// Returns a value indicating whether the unit converter can
/// convert from the specified source type.
///
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
if (sourceType == typeof(string)) {
return true;
}
else {
return base.CanConvertFrom(context, sourceType);
}
}
///
///
/// Returns a value indicating whether the converter can
/// convert to the specified destination type.
///
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
if ((destinationType == typeof(string)) ||
(destinationType == typeof(InstanceDescriptor))) {
return true;
}
else {
return base.CanConvertTo(context, destinationType);
}
}
///
///
/// Performs type conversion from the given value into a Unit.
///
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
if (value == null)
return null;
string stringValue = value as string;
if (stringValue != null) {
string textValue = stringValue.Trim();
if (textValue.Length == 0) {
return Unit.Empty;
}
if (culture != null) {
return Unit.Parse(textValue, culture);
}
else {
return Unit.Parse(textValue, CultureInfo.CurrentCulture);
}
}
else {
return base.ConvertFrom(context, culture, value);
}
}
///
///
/// Performs type conversion to the specified destination type
///
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
if (destinationType == typeof(string)) {
if ((value == null) || ((Unit)value).IsEmpty)
return String.Empty;
else
return ((Unit)value).ToString(culture);
}
else if ((destinationType == typeof(InstanceDescriptor)) && (value != null)) {
Unit u = (Unit)value;
MemberInfo member = null;
object[] args = null;
if (u.IsEmpty) {
member = typeof(Unit).GetField("Empty");
}
else {
member = typeof(Unit).GetConstructor(new Type[] { typeof(double), typeof(UnitType) });
args = new object[] { u.Value, u.Type };
}
Debug.Assert(member != null, "Looks like we're missing Unit.Empty or Unit::ctor(double, UnitType)");
if (member != null) {
return new InstanceDescriptor(member, args);
}
else {
return null;
}
}
else {
return base.ConvertTo(context, culture, value, destinationType);
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StyleBamlRecordReader.cs
- DesignTimeTemplateParser.cs
- XmlTextEncoder.cs
- TableLayoutPanelDesigner.cs
- WebPartDescriptionCollection.cs
- ManagedIStream.cs
- MemoryPressure.cs
- SimpleRecyclingCache.cs
- WinEventHandler.cs
- CheckedPointers.cs
- PhoneCallDesigner.cs
- HttpClientChannel.cs
- XsdDuration.cs
- Semaphore.cs
- SizeAnimationClockResource.cs
- ClusterRegistryConfigurationProvider.cs
- WebPermission.cs
- BooleanSwitch.cs
- Pair.cs
- GeneralTransform2DTo3DTo2D.cs
- ConditionalAttribute.cs
- _HelperAsyncResults.cs
- StylusLogic.cs
- InstanceNameConverter.cs
- DbParameterCollectionHelper.cs
- BaseCollection.cs
- RegistryPermission.cs
- SafeReadContext.cs
- ProjectionQueryOptionExpression.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PackageDigitalSignature.cs
- FileDialogCustomPlacesCollection.cs
- InkCanvasSelectionAdorner.cs
- SqlConnectionPoolProviderInfo.cs
- ProxyHwnd.cs
- EntityDataSourceValidationException.cs
- XLinq.cs
- MemberHolder.cs
- Rights.cs
- QuaternionConverter.cs
- WebPartTracker.cs
- PerformanceCounterPermission.cs
- TakeOrSkipQueryOperator.cs
- SetIterators.cs
- Internal.cs
- UserPreferenceChangedEventArgs.cs
- XmlAnyElementAttribute.cs
- TypefaceMetricsCache.cs
- FolderBrowserDialog.cs
- GiveFeedbackEvent.cs
- Duration.cs
- LinkTarget.cs
- DiffuseMaterial.cs
- TypeProvider.cs
- CustomError.cs
- InvalidPrinterException.cs
- COM2AboutBoxPropertyDescriptor.cs
- HostedHttpRequestAsyncResult.cs
- DetailsViewUpdateEventArgs.cs
- XmlQueryOutput.cs
- XMLSchema.cs
- VSWCFServiceContractGenerator.cs
- KeyedCollection.cs
- IncrementalReadDecoders.cs
- AlphaSortedEnumConverter.cs
- TaskFileService.cs
- TypedTableBase.cs
- ExtensionFile.cs
- CursorConverter.cs
- ListViewDeleteEventArgs.cs
- ApplicationBuildProvider.cs
- DescendantBaseQuery.cs
- DocumentSchemaValidator.cs
- TranslateTransform3D.cs
- BasicCellRelation.cs
- XmlSchemas.cs
- ZipIOCentralDirectoryBlock.cs
- ResizeGrip.cs
- SByteConverter.cs
- ErrorHandler.cs
- WebPartActionVerb.cs
- ActivityExecutorOperation.cs
- NamespaceEmitter.cs
- ACL.cs
- ReliableMessagingVersionConverter.cs
- LowerCaseStringConverter.cs
- CompoundFileDeflateTransform.cs
- XmlSchemaValidationException.cs
- FormClosingEvent.cs
- ContentValidator.cs
- NameNode.cs
- ExtentJoinTreeNode.cs
- XmlSchemaSubstitutionGroup.cs
- DeploymentSection.cs
- SubMenuStyle.cs
- SystemColors.cs
- CaseInsensitiveComparer.cs
- UpdatePanelTriggerCollection.cs
- SkipStoryboardToFill.cs
- JournalEntry.cs