126 lines
4.7 KiB
C#
126 lines
4.7 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="HelpKeywordAttribute.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
/*
|
|
*/
|
|
|
|
namespace System.ComponentModel.Design {
|
|
using System;
|
|
using System.Security.Permissions;
|
|
|
|
/// <devdoc>
|
|
/// Allows specification of the context keyword that will be specified for this class or member. By default,
|
|
/// the help keyword for a class is the Type's full name, and for a member it's the full name of the type that declared the property,
|
|
/// plus the property name itself.
|
|
///
|
|
/// For example, consider System.Windows.Forms.Button and it's Text property:
|
|
///
|
|
/// The class keyword is "System.Windows.Forms.Button", but the Text property keyword is "System.Windows.Forms.Control.Text", because the Text
|
|
/// property is declared on the System.Windows.Forms.Control class rather than the Button class itself; the Button class inherits the property.
|
|
/// By contrast, the DialogResult property is declared on the Button so its keyword would be "System.Windows.Forms.Button.DialogResult".
|
|
///
|
|
/// When the help system gets the keywords, it will first look at this attribute. At the class level, it will return the string specified by the
|
|
/// HelpContextAttribute. Note this will not be used for members of the Type in question. They will still reflect the declaring Type's actual
|
|
/// full name, plus the member name. To override this, place the attribute on the member itself.
|
|
///
|
|
/// Example:
|
|
///
|
|
/// [HelpKeywordAttribute(typeof(Component))]
|
|
/// public class MyComponent : Component {
|
|
///
|
|
///
|
|
/// public string Property1 { get{return "";};
|
|
///
|
|
/// [HelpKeywordAttribute("SomeNamespace.SomeOtherClass.Property2")]
|
|
/// public string Property2 { get{return "";};
|
|
///
|
|
/// }
|
|
///
|
|
///
|
|
/// For the above class (default without attribution):
|
|
///
|
|
/// Class keyword: "System.ComponentModel.Component" ("MyNamespace.MyComponent')
|
|
/// Property1 keyword: "MyNamespace.MyComponent.Property1" (default)
|
|
/// Property2 keyword: "SomeNamespace.SomeOtherClass.Property2" ("MyNamespace.MyComponent.Property2")
|
|
///
|
|
/// </devdoc>
|
|
[AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = false)]
|
|
[Serializable]
|
|
public sealed class HelpKeywordAttribute : Attribute {
|
|
|
|
/// <devdoc>
|
|
/// Default value for HelpKeywordAttribute, which is null.
|
|
/// </devdoc>
|
|
public static readonly HelpKeywordAttribute Default = new HelpKeywordAttribute();
|
|
|
|
private string contextKeyword;
|
|
|
|
/// <devdoc>
|
|
/// Default constructor, which creates an attribute with a null HelpKeyword.
|
|
/// </devdoc>
|
|
public HelpKeywordAttribute() {
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// Creates a HelpKeywordAttribute with the value being the given keyword string.
|
|
/// </devdoc>
|
|
public HelpKeywordAttribute(string keyword) {
|
|
if (keyword == null) {
|
|
throw new ArgumentNullException("keyword");
|
|
}
|
|
this.contextKeyword = keyword;
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// Creates a HelpKeywordAttribute with the value being the full name of the given type.
|
|
/// </devdoc>
|
|
public HelpKeywordAttribute(Type t) {
|
|
if (t == null) {
|
|
throw new ArgumentNullException("t");
|
|
}
|
|
this.contextKeyword = t.FullName;
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// Retrieves the HelpKeyword this attribute supplies.
|
|
/// </devdoc>
|
|
public string HelpKeyword {
|
|
get {
|
|
return contextKeyword;
|
|
}
|
|
}
|
|
|
|
|
|
/// <devdoc>
|
|
/// Two instances of a HelpKeywordAttribute are equal if they're HelpKeywords are equal.
|
|
/// </devdoc>
|
|
public override bool Equals(object obj) {
|
|
if (obj == this) {
|
|
return true;
|
|
}
|
|
if ((obj != null) && (obj is HelpKeywordAttribute)) {
|
|
return ((HelpKeywordAttribute)obj).HelpKeyword == HelpKeyword;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// </devdoc>
|
|
public override int GetHashCode() {
|
|
return base.GetHashCode();
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// Returns true if this Attribute's HelpKeyword is null.
|
|
/// </devdoc>
|
|
public override bool IsDefaultAttribute() {
|
|
return this.Equals(Default);
|
|
}
|
|
}
|
|
}
|
|
|