ControlValuePropertyAttribute.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / ControlValuePropertyAttribute.cs / 1 / ControlValuePropertyAttribute.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI { 
    using System; 
    using System.ComponentModel;
    using System.Diagnostics; 
    using System.Security.Permissions;
    using System.Web.Util;

    ///  
    /// Specifies the default value property for a control.
    ///  
    [AttributeUsage(AttributeTargets.Class)] 
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public sealed class ControlValuePropertyAttribute : Attribute { 
        private readonly string _name;
        private readonly object _defaultValue;

 
        /// 
        /// Initializes a new instance of the  class. 
        ///  
        public ControlValuePropertyAttribute(string name) {
            _name = name; 
        }

        /// 
        /// Initializes a new instance of the class, using the specified value as the default value. 
        /// 
        public ControlValuePropertyAttribute(string name, object defaultValue) { 
            _name = name; 
            _defaultValue = defaultValue;
        } 

        /// 
        /// Initializes a new instance of the class, converting the specified value to the
        /// specified type. 
        /// 
        public ControlValuePropertyAttribute(string name, Type type, string defaultValue) { 
            _name = name; 
            // The try/catch here is because attributes should never throw exceptions.  We would fail to
            // load an otherwise normal class. 
            try {
                _defaultValue = TypeDescriptor.GetConverter(type).ConvertFromInvariantString(defaultValue);
            }
            catch { 
                System.Diagnostics.Debug.Fail("ControlValuePropertyAttribute: Default value of type " + type.FullName + " threw converting from the string '" + defaultValue + "'.");
            } 
        } 

 
        /// 
        /// Gets the name of the default value property for the control this attribute is bound to.
        /// 
        public string Name { 
            get {
                return _name; 
            } 
        }
 
        /// 
        /// Gets the value of the default value property for the control this attribute is bound to.
        /// 
        public object DefaultValue { 
            get {
                return _defaultValue; 
            } 
        }
 


        public override bool Equals(object obj) {
            ControlValuePropertyAttribute other = obj as ControlValuePropertyAttribute; 

            if (other != null) { 
                if (String.Equals(_name, other.Name, StringComparison.Ordinal)) { 
                    if (_defaultValue != null) {
                        return _defaultValue.Equals(other.DefaultValue); 
                    }
                    else {
                        return (other.DefaultValue == null);
                    } 
                }
            } 
            return false; 
        }
 

        public override int GetHashCode() {
            return System.Web.Util.HashCodeCombiner.CombineHashCodes(
                ((Name != null) ? Name.GetHashCode() : 0), 
                ((DefaultValue != null) ? DefaultValue.GetHashCode() : 0));
        } 
    } 
}
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK