//
using System.Globalization;
+using System.Reflection;
+using System.ComponentModel.Design.Serialization;
namespace System.ComponentModel
{
- public class DecimalConverter : BaseNumberConverter
+ public class DecimalConverter : BaseNumberConverter
{
public DecimalConverter()
{
+ InnerType = typeof(Decimal);
+ }
+
+ internal override bool SupportHex {
+ get { return false; }
}
public override bool CanConvertTo (ITypeDescriptorContext context,
Type destinationType)
{
+ if (destinationType == typeof (InstanceDescriptor))
+ return true;
return base.CanConvertTo (context, destinationType);
}
public override object ConvertTo (ITypeDescriptorContext context,
CultureInfo culture, object value, Type destinationType)
{
+ if (destinationType == typeof (InstanceDescriptor) && value is Decimal) {
+ Decimal cval = (Decimal) value;
+ ConstructorInfo ctor = typeof(Decimal).GetConstructor (new Type[] {typeof(int[])});
+ return new InstanceDescriptor (ctor, new object[] {Decimal.GetBits (cval)});
+ }
+
return base.ConvertTo(context, culture, value, destinationType);
}
+
+ internal override string ConvertToString (object value, NumberFormatInfo format)
+ {
+ return ((decimal) value).ToString ("G", format);
+ }
+
+ internal override object ConvertFromString (string value, NumberFormatInfo format)
+ {
+ return decimal.Parse (value, NumberStyles.Float, format);
+ }
}
}