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
- XpsDocumentEvent.cs
- keycontainerpermission.cs
- AuthenticationException.cs
- SoapFault.cs
- SiteMapDesignerDataSourceView.cs
- XmlSchemaSet.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- HtmlWindowCollection.cs
- XmlTypeAttribute.cs
- MessageFilter.cs
- basevalidator.cs
- IntMinMaxAggregationOperator.cs
- FileClassifier.cs
- WindowPattern.cs
- CallSite.cs
- Function.cs
- basecomparevalidator.cs
- XmlJsonReader.cs
- DBCSCodePageEncoding.cs
- MergeLocalizationDirectives.cs
- SecurityIdentifierElement.cs
- Operand.cs
- PromptStyle.cs
- HtmlTextArea.cs
- Clipboard.cs
- diagnosticsswitches.cs
- KnownTypesProvider.cs
- DrawingImage.cs
- CurrencyManager.cs
- RegisteredHiddenField.cs
- CollectionContainer.cs
- TransformerInfo.cs
- Merger.cs
- LinkUtilities.cs
- ViewStateException.cs
- BitmapVisualManager.cs
- NetworkInterface.cs
- MarginsConverter.cs
- PropertyPanel.cs
- SortKey.cs
- PseudoWebRequest.cs
- BitmapDecoder.cs
- Win32MouseDevice.cs
- WebPartEditVerb.cs
- SafeProcessHandle.cs
- DesignerWidgets.cs
- DbDeleteCommandTree.cs
- IndexerNameAttribute.cs
- ContainerUIElement3D.cs
- TailCallAnalyzer.cs
- SqlInternalConnection.cs
- SqlColumnizer.cs
- AsymmetricKeyExchangeDeformatter.cs
- EmptyEnumerator.cs
- RotationValidation.cs
- IOException.cs
- ComplexObject.cs
- TimeSpanConverter.cs
- ScrollViewerAutomationPeer.cs
- JulianCalendar.cs
- StrokeFIndices.cs
- PropertyMappingExceptionEventArgs.cs
- BrowserInteropHelper.cs
- WebExceptionStatus.cs
- OpenTypeMethods.cs
- EmbeddedObject.cs
- XhtmlConformanceSection.cs
- XmlSerializerAssemblyAttribute.cs
- IDispatchConstantAttribute.cs
- DesignerAutoFormatStyle.cs
- CollectionViewGroupInternal.cs
- MaskDesignerDialog.cs
- UserControlCodeDomTreeGenerator.cs
- ErrorFormatter.cs
- WebPart.cs
- LineGeometry.cs
- FunctionDefinition.cs
- DesignTimeHTMLTextWriter.cs
- SoapDocumentServiceAttribute.cs
- ByteConverter.cs
- AutomationEventArgs.cs
- HttpFileCollectionBase.cs
- ListBoxItemAutomationPeer.cs
- PocoPropertyAccessorStrategy.cs
- StatusBarPanelClickEvent.cs
- StaticSiteMapProvider.cs
- EncryptedKey.cs
- SpecialFolderEnumConverter.cs
- SpeechAudioFormatInfo.cs
- LocalBuilder.cs
- SecurityCriticalDataForSet.cs
- CompositeFontFamily.cs
- XmlParserContext.cs
- MouseGestureValueSerializer.cs
- DeviceContexts.cs
- WebPartDisplayModeCollection.cs
- UriWriter.cs
- CalendarDay.cs
- MulticastDelegate.cs
- AccessDataSourceWizardForm.cs