//------------------------------------------------------------------------------ // <copyright file="ProvidePropertyAttribute.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> //------------------------------------------------------------------------------ /* */ namespace System.ComponentModel { using System; using System.Diagnostics; using System.Security.Permissions; /// <devdoc> /// <para> Specifies which methods are extender /// properties.</para> /// </devdoc> [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] public sealed class ProvidePropertyAttribute : Attribute { private readonly string propertyName; private readonly string receiverTypeName; /// <devdoc> /// <para>Initializes a new instance of the <see cref='System.ComponentModel.ProvidePropertyAttribute'/> class.</para> /// </devdoc> public ProvidePropertyAttribute(string propertyName, Type receiverType) { this.propertyName = propertyName; this.receiverTypeName = receiverType.AssemblyQualifiedName; } /// <devdoc> /// <para>Initializes a new instance of the <see cref='System.ComponentModel.ProvidePropertyAttribute'/> class.</para> /// </devdoc> public ProvidePropertyAttribute(string propertyName, string receiverTypeName) { this.propertyName = propertyName; this.receiverTypeName = receiverTypeName; } /// <devdoc> /// <para> /// Gets the name of a property that this class provides. /// </para> /// </devdoc> public string PropertyName { get { return propertyName; } } /// <devdoc> /// <para> /// Gets the name of the data type this property can extend /// </para> /// </devdoc> public string ReceiverTypeName { get { return receiverTypeName; } } /// <devdoc> /// <para>ProvidePropertyAttribute overrides this to include the type name and the property name</para> /// </devdoc> public override object TypeId { get { return GetType().FullName + propertyName; } } public override bool Equals(object obj) { if (obj == this) { return true; } ProvidePropertyAttribute other = obj as ProvidePropertyAttribute; return (other != null) && other.propertyName == propertyName && other.receiverTypeName == receiverTypeName; } public override int GetHashCode() { return propertyName.GetHashCode() ^ receiverTypeName.GetHashCode(); } } }