Feedback

C# - DescriptionAttribute von vorhandener Klasse übernehmen

Veröffentlicht von am 03.05.2008
(1 Bewertungen)
Mit diesem ReferencedDescription-Attribut wird für eine Eigenschaft anstelle des Description-Attributs der Text geholt, den NET für eine andere Klasse und Eigenschaft vorgemerkt hat. Beispiel: Für eine DataGridViewMaskedTextBoxColumn-Klasse wird die Beschreibung aus der MaskedTextBox.Mask-Eigenschaft angezeigt:

[ReferencedDescription(typeof(System.Windows.Forms.MaskedTextBox), "Mask")]
using System.ComponentModel;

#region Referenced Description Attribute

public class ReferencedDescriptionAttribute : DescriptionAttribute
{

  public ReferencedDescriptionAttribute(Type referencedType, string propertyName)
  {
    string result = "Referenced description not available";

    //    gets the properties of the referenced type
    PropertyDescriptorCollection properties
            = TypeDescriptor.GetProperties(referencedType);

    if (properties != null) {
      // gets a PropertyDescriptor to the specific property.
      PropertyDescriptor property = properties[propertyName];
      if (property != null) {
        //  gets the attributes of the required property
        AttributeCollection attributes = property.Attributes;

        // Gets the description attribute from the collection.
        DescriptionAttribute descript
          = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];

        // register the referenced description
        if (!String.IsNullOrEmpty(descript.Description))
          result = descript.Description;
      }
    }
    DescriptionValue = result;

  }
}

#endregion

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!