//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ /* */ namespace System.ComponentModel { using System.Security.Permissions; /// /// Marks instances of objects that are inherited from their base class. This /// class cannot be inherited. /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event)] public sealed class InheritanceAttribute : Attribute { private readonly InheritanceLevel inheritanceLevel; /// /// /// Specifies that the component is inherited. This field is /// read-only. /// /// public static readonly InheritanceAttribute Inherited = new InheritanceAttribute(InheritanceLevel.Inherited); /// /// /// Specifies that /// the component is inherited and is read-only. This field is /// read-only. /// /// public static readonly InheritanceAttribute InheritedReadOnly = new InheritanceAttribute(InheritanceLevel.InheritedReadOnly); /// /// /// Specifies that the component is not inherited. This field is /// read-only. /// /// public static readonly InheritanceAttribute NotInherited = new InheritanceAttribute(InheritanceLevel.NotInherited); /// /// /// Specifies the default value for /// the InheritanceAttribute as NotInherited. /// /// public static readonly InheritanceAttribute Default = NotInherited; /// /// Initializes a new instance of the System.ComponentModel.Design.InheritanceAttribute /// class. /// public InheritanceAttribute() { inheritanceLevel = Default.inheritanceLevel; } /// /// Initializes a new instance of the System.ComponentModel.Design.InheritanceAttribute class /// with the specified inheritance /// level. /// public InheritanceAttribute(InheritanceLevel inheritanceLevel) { this.inheritanceLevel = inheritanceLevel; } /// /// /// Gets or sets /// the current inheritance level stored in this attribute. /// /// public InheritanceLevel InheritanceLevel { get { return inheritanceLevel; } } /// /// /// Override to test for equality. /// /// public override bool Equals(object value) { if (value == this) { return true; } if (!(value is InheritanceAttribute)) { return false; } InheritanceLevel valueLevel = ((InheritanceAttribute)value).InheritanceLevel; return (valueLevel == inheritanceLevel); } /// /// /// Returns the hashcode for this object. /// /// public override int GetHashCode() { return base.GetHashCode(); } /// /// /// Gets whether this attribute is the default. /// /// public override bool IsDefaultAttribute() { return (this.Equals(Default)); } /// /// /// Converts this attribute to a string. /// /// public override string ToString() { return TypeDescriptor.GetConverter(typeof(InheritanceLevel)).ConvertToString(InheritanceLevel); } } }