diff options
Diffstat (limited to 'src/mscorlib/shared/System/ComponentModel')
-rw-r--r-- | src/mscorlib/shared/System/ComponentModel/DefaultValueAttribute.cs | 228 | ||||
-rw-r--r-- | src/mscorlib/shared/System/ComponentModel/EditorBrowsableAttribute.cs | 48 |
2 files changed, 276 insertions, 0 deletions
diff --git a/src/mscorlib/shared/System/ComponentModel/DefaultValueAttribute.cs b/src/mscorlib/shared/System/ComponentModel/DefaultValueAttribute.cs new file mode 100644 index 0000000000..3cdc907297 --- /dev/null +++ b/src/mscorlib/shared/System/ComponentModel/DefaultValueAttribute.cs @@ -0,0 +1,228 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Globalization; +using System.Runtime.InteropServices; + +namespace System.ComponentModel +{ + /// <devdoc> + /// <para>Specifies the default value for a property.</para> + /// </devdoc> + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")] + [AttributeUsage(AttributeTargets.All)] + public class DefaultValueAttribute : Attribute + { + /// <devdoc> + /// This is the default value. + /// </devdoc> + private object _value; + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class, converting the + /// specified value to the + /// specified type, and using the U.S. English culture as the + /// translation + /// context.</para> + /// </devdoc> + public DefaultValueAttribute(Type type, string value) + { + // The try/catch here is because attributes should never throw exceptions. We would fail to + // load an otherwise normal class. + try + { + if (type.IsSubclassOf(typeof(Enum))) + { + _value = Enum.Parse(type, value, true); + } + else if (type == typeof(TimeSpan)) + { + _value = TimeSpan.Parse(value); + } + else + { + _value = Convert.ChangeType(value, type, CultureInfo.InvariantCulture); + } + } + catch + { + } + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a Unicode + /// character.</para> + /// </devdoc> + public DefaultValueAttribute(char value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using an 8-bit unsigned + /// integer.</para> + /// </devdoc> + public DefaultValueAttribute(byte value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a 16-bit signed + /// integer.</para> + /// </devdoc> + public DefaultValueAttribute(short value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a 32-bit signed + /// integer.</para> + /// </devdoc> + public DefaultValueAttribute(int value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a 64-bit signed + /// integer.</para> + /// </devdoc> + public DefaultValueAttribute(long value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a + /// single-precision floating point + /// number.</para> + /// </devdoc> + public DefaultValueAttribute(float value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a + /// double-precision floating point + /// number.</para> + /// </devdoc> + public DefaultValueAttribute(double value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.Boolean'/> + /// value.</para> + /// </devdoc> + public DefaultValueAttribute(bool value) + { + _value = value; + } + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.String'/>.</para> + /// </devdoc> + public DefaultValueAttribute(string value) + { + _value = value; + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> + /// class.</para> + /// </devdoc> + public DefaultValueAttribute(object value) + { + _value = value; + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.SByte'/> + /// value.</para> + /// </devdoc> + [CLSCompliant(false)] + public DefaultValueAttribute(sbyte value) + { + _value = value; + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.UInt16'/> + /// value.</para> + /// </devdoc> + [CLSCompliant(false)] + public DefaultValueAttribute(ushort value) + { + _value = value; + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.UInt32'/> + /// value.</para> + /// </devdoc> + [CLSCompliant(false)] + public DefaultValueAttribute(uint value) + { + _value = value; + } + + /// <devdoc> + /// <para>Initializes a new instance of the <see cref='System.ComponentModel.DefaultValueAttribute'/> class using a <see cref='System.UInt64'/> + /// value.</para> + /// </devdoc> + [CLSCompliant(false)] + public DefaultValueAttribute(ulong value) + { + _value = value; + } + + /// <devdoc> + /// <para> + /// Gets the default value of the property this + /// attribute is + /// bound to. + /// </para> + /// </devdoc> + public virtual object Value + { + get + { + return _value; + } + } + + public override bool Equals(object obj) + { + if (obj == this) + { + return true; + } + + DefaultValueAttribute other = obj as DefaultValueAttribute; + + if (other != null) + { + if (Value != null) + { + return Value.Equals(other.Value); + } + else + { + return (other.Value == null); + } + } + return false; + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + protected void SetValue(object value) + { + _value = value; + } + } +} diff --git a/src/mscorlib/shared/System/ComponentModel/EditorBrowsableAttribute.cs b/src/mscorlib/shared/System/ComponentModel/EditorBrowsableAttribute.cs new file mode 100644 index 0000000000..9b4d6e626e --- /dev/null +++ b/src/mscorlib/shared/System/ComponentModel/EditorBrowsableAttribute.cs @@ -0,0 +1,48 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace System.ComponentModel +{ + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Delegate | AttributeTargets.Interface)] + public sealed class EditorBrowsableAttribute : Attribute + { + private EditorBrowsableState browsableState; + + public EditorBrowsableAttribute(EditorBrowsableState state) + { + browsableState = state; + } + + public EditorBrowsableAttribute() : this(EditorBrowsableState.Always) { } + + public EditorBrowsableState State + { + get { return browsableState; } + } + + public override bool Equals(object obj) + { + if (obj == this) + { + return true; + } + + EditorBrowsableAttribute other = obj as EditorBrowsableAttribute; + + return (other != null) && other.browsableState == browsableState; + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + public enum EditorBrowsableState + { + Always, + Never, + Advanced + } +} |