//
-// System.ComponentModel.DefaultValueAttribute
+// System.ComponentModel.DefaultValueAttribute.cs
//
// Authors:
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
//
// (C) 2003 Andreas Nahr
//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Globalization;
namespace System.ComponentModel
{
- [AttributeUsage(AttributeTargets.All)]
- public sealed class DefaultValueAttribute : Attribute
- {
-
- private object DefaultValue;
-
- public DefaultValueAttribute (bool value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (byte value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (char value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (double value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (short value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (int value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (long value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (object value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (float value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (string value)
- {
- DefaultValue = value;
- }
-
- public DefaultValueAttribute (Type type, string value)
- {
- // TODO check if this implementation is correct
- try
- {
- DefaultValue = Convert.ChangeType (value, type);
- }
- catch
- {
- DefaultValue = null;
- }
- }
-
- public object Value
- {
- get { return DefaultValue; }
- }
-
- public override bool Equals (object obj)
- {
- if (!(obj is DefaultValueAttribute))
- return false;
- if (obj == this)
- return true;
- return ((DefaultValueAttribute) obj).Value == DefaultValue;
- }
-
- public override int GetHashCode()
- {
- return DefaultValue.GetHashCode();
- }
- }
+ [AttributeUsage(AttributeTargets.All)]
+ public sealed class DefaultValueAttribute : Attribute
+ {
+
+ private object DefaultValue;
+
+ public DefaultValueAttribute (bool value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (byte value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (char value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (double value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (short value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (int value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (long value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (object value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (float value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (string value)
+ {
+ DefaultValue = value;
+ }
+
+ public DefaultValueAttribute (Type type, string value)
+ {
+ try {
+ TypeConverter converter = TypeDescriptor.GetConverter (type);
+ DefaultValue = converter.ConvertFromString (null, CultureInfo.InvariantCulture, value);
+ } catch { }
+ }
+
+ public object Value {
+ get { return DefaultValue; }
+ }
+
+ public override bool Equals (object obj)
+ {
+ if (!(obj is DefaultValueAttribute))
+ return false;
+ if (obj == this)
+ return true;
+ return ((DefaultValueAttribute) obj).Value == DefaultValue;
+ }
+
+ public override int GetHashCode()
+ {
+ return DefaultValue.GetHashCode();
+ }
+ }
}
-
-
-// OLD IMPLEMENTATION
-//using System;
-//
-//
-//
-//namespace System.ComponentModel
-//
-//{
-//
-// /// <summary>
-//
-// /// Specifies the default value for a property.
-//
-// /// </summary>
-//
-//
-//
-// [MonoTODO("Needs testing. DefaultValueAttribute(System.Type type, string value) is not implemented. Value has no description.")]
-//
-// [AttributeUsage(AttributeTargets.All)]
-//
-// public sealed class DefaultValueAttribute : Attribute
-//
-// {
-//
-//
-//
-// private object defaultValue;
-//
-//
-//
-// /// <summary>
-//
-// /// FIXME: Summary description for Value.
-//
-// /// </summary>
-//
-// public object Value
-//
-// {
-//
-// get
-//
-// {
-//
-// return defaultValue;
-//
-// }
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class.
-//
-// /// </summary>
-//
-// /// <param name="value">An System.Object that represents the default value.</param>
-//
-// public DefaultValueAttribute(object value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a System.Boolean value.
-//
-// /// </summary>
-//
-// /// <param name="value">An System.Boolean that represents the default value.</param>
-//
-// public DefaultValueAttribute(bool value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using an 8-bit unsigned integer.
-//
-// /// </summary>
-//
-// /// <param name="value">An 8-bit unsigned integer that is the default value.</param>
-//
-// public DefaultValueAttribute(byte value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a Unicode character.
-//
-// /// </summary>
-//
-// /// <param name="value">A Unicode character that is the default value.</param>
-//
-// public DefaultValueAttribute(char value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a double-precision floating point number.
-//
-// /// </summary>
-//
-// /// <param name="value">A double-precision floating point number that is the default value.</param>
-//
-// public DefaultValueAttribute(double value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a 32-bit signed integer.
-//
-// /// </summary>
-//
-// /// <param name="value">A 32-bit signed integer that is the default value.</param>
-//
-// public DefaultValueAttribute(int value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a 64-bit signed integer.
-//
-// /// </summary>
-//
-// /// <param name="value">A 64-bit signed integer that is the default value.</param>
-//
-// public DefaultValueAttribute(long value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a 16-bit signed integer.
-//
-// /// </summary>
-//
-// /// <param name="value">A 16-bit signed integer that is the default value.</param>
-//
-// public DefaultValueAttribute(short value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a single-precision floating point number.
-//
-// /// </summary>
-//
-// /// <param name="value">A single-precision floating point number that is the default value.</param>
-//
-// public DefaultValueAttribute(System.Single value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class using a System.String.
-//
-// /// </summary>
-//
-// /// <param name="value">A System.String that is the default value.</param>
-//
-// public DefaultValueAttribute(string value)
-//
-// {
-//
-// defaultValue = value;
-//
-// }
-//
-//
-//
-// /*
-//
-// /// <summary>
-//
-// /// Initializes a new instance of the System.ComponentModel.DefaultValueAttribute class, converting the specified value to the specified type, and using an invariant culture as the translation context.
-//
-// /// </summary>
-//
-// /// <param name="type">A System.Type that represents the type to convert the value to.</param>
-//
-// /// <param name="value">A System.String that can be converted to the type using the System.ComponentModel.TypeConverter for the type and the U.S. English culture.</param>
-//
-// public DefaultValueAttribute(System.Type type, string value)
-//
-// {
-//
-// //FIXME
-//
-// throw new NotImplementedException();
-//
-// }
-//
-// */
-//
-// }
-//
-//
-//
-//}
-
-
-