Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

PropertyDescriptor-Klasse

 

Veröffentlicht: Oktober 2016

Stellt eine Abstraktion einer Eigenschaft für eine Klasse bereit.

Namespace:   System.ComponentModel
Assembly:  System (in System.dll)


[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public abstract class PropertyDescriptor : MemberDescriptor

NameBeschreibung
System_CAPS_protmethodPropertyDescriptor(MemberDescriptor)

Initialisiert eine neue Instanz der der PropertyDescriptor Klasse mit dem Namen und den Attributen in der angegebenen MemberDescriptor.

System_CAPS_protmethodPropertyDescriptor(MemberDescriptor, Attribute[])

Initialisiert eine neue Instanz der der PropertyDescriptor Klasse mit dem Namen in der angegebenen MemberDescriptor und den Attributen in der MemberDescriptor und die Attribute Array.

System_CAPS_protmethodPropertyDescriptor(String, Attribute[])

Initialisiert eine neue Instanz der PropertyDescriptor -Klasse mit dem angegebenen Namen und Attributen.

NameBeschreibung
System_CAPS_protpropertyAttributeArray

Ruft ab oder legt ein Array von Attributen.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyAttributes

Ruft die Auflistung der Attribute für dieses Element ab.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyCategory

Ruft den Namen der Kategorie, zu der das Element gehört, gemäß den Angaben in der CategoryAttribute.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyComponentType

Ruft beim Überschreiben in einer abgeleiteten Klasse ruft den Typ der Komponente, der diese Eigenschaft gebunden ist.

System_CAPS_pubpropertyConverter

Ruft den Typkonverter für diese Eigenschaft ab.

System_CAPS_pubpropertyDescription

Ruft die Beschreibung des Elements gemäß der DescriptionAttribute.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyDesignTimeOnly

Ruft ab, ob dieser Member nur zur Entwurfszeit entsprechend festgelegt werden, sollte die DesignOnlyAttribute.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyDisplayName

Ruft den Namen, der in einem Fenster, z. B. einem Eigenschaftenfenster angezeigt werden können.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyIsBrowsable

Ruft einen Wert, der angibt, ob der Member durchsucht werden kann, gemäß der BrowsableAttribute.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyIsLocalizable

Ruft einen Wert, der angibt, ob diese Eigenschaft lokalisiert werden soll, gemäß den Angaben in der LocalizableAttribute.

System_CAPS_pubpropertyIsReadOnly

Ruft beim Überschreiben in einer abgeleiteten Klasse ruft einen Wert, der angibt, ob diese Eigenschaft schreibgeschützt ist.

System_CAPS_pubpropertyName

Ruft den Namen des Elements ab.(Geerbt von „MemberDescriptor“.)

System_CAPS_protpropertyNameHashCode

Ruft den Hashcode für den Namen des Elements gemäß GetHashCode.(Geerbt von „MemberDescriptor“.)

System_CAPS_pubpropertyPropertyType

Ruft beim Überschreiben in einer abgeleiteten Klasse ruft den Typ der Eigenschaft ab.

System_CAPS_pubpropertySerializationVisibility

Ruft einen Wert, der angibt, ob diese Eigenschaft serialisiert werden soll, gemäß den Angaben in der DesignerSerializationVisibilityAttribute.

System_CAPS_pubpropertySupportsChangeEvents

Ruft einen Wert an, ob der Wert von änderungsbenachrichtigungen für diese Eigenschaft von außerhalb der Eigenschaftendeskriptor stammen können.

NameBeschreibung
System_CAPS_pubmethodAddValueChanged(Object, EventHandler)

Ermöglicht es anderen Objekten benachrichtigt werden, wenn diese Eigenschaft geändert wird.

System_CAPS_pubmethodCanResetValue(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt zurück, ob beim Zurücksetzen eines Objekts geändert wird.

System_CAPS_protmethodCreateAttributeCollection()

Erstellt eine Auflistung von Attributen, wobei das Array von Attributen, die an den Konstruktor übergeben.(Geerbt von „MemberDescriptor“.)

System_CAPS_protmethodCreateInstance(Type)

Erstellt eine Instanz des angegebenen Typs.

System_CAPS_pubmethodEquals(Object)

Vergleicht diese mit einem anderen Objekt, um festzustellen, ob sie gleich sind.(Überschreibt MemberDescriptor.Equals(Object).)

System_CAPS_protmethodFillAttributes(IList)

Fügt die Attribute der PropertyDescriptor in der angegebenen Liste der Attribute in der übergeordneten Klasse.(Überschreibt MemberDescriptor.FillAttributes(IList).)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodGetChildProperties()

Gibt den Standardwert zurück PropertyDescriptorCollection.

System_CAPS_pubmethodGetChildProperties(Attribute[])

Gibt eine PropertyDescriptorCollection ein angegebenes Array von Attributen als Filter verwenden.

System_CAPS_pubmethodGetChildProperties(Object)

Gibt eine PropertyDescriptorCollection für ein bestimmtes Objekt.

System_CAPS_pubmethodGetChildProperties(Object, Attribute[])

Gibt eine PropertyDescriptorCollection für ein bestimmtes Objekt, das ein angegebenes Array von Attributen als Filter verwenden.

System_CAPS_pubmethodGetEditor(Type)

Ruft einen Editor des angegebenen Typs ab.

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für dieses Objekt zurück.(Überschreibt MemberDescriptor.GetHashCode().)

System_CAPS_protmethodGetInvocationTarget(Type, Object)

Diese Methode gibt das Objekt, das beim Aufrufen der Member verwendet werden soll.(Überschreibt MemberDescriptor.GetInvocationTarget(Type, Object).)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodGetTypeFromName(String)

Gibt einen Typ mit dem Namen.

System_CAPS_pubmethodGetValue(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse ruft den aktuellen Wert der Eigenschaft für eine Komponente ab.

System_CAPS_protmethodGetValueChangedHandler(Object)

Ruft den aktuellen Satz von ValueChanged -Ereignishandler für eine bestimmte Komponente

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethodOnValueChanged(Object, EventArgs)

Löst das ValueChanged -Ereignis, das Sie implementiert.

System_CAPS_pubmethodRemoveValueChanged(Object, EventHandler)

Ermöglicht es anderen Objekten benachrichtigt werden, wenn diese Eigenschaft geändert wird.

System_CAPS_pubmethodResetValue(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse wird den Wert für diese Eigenschaft der Komponente auf den Standardwert zurückgesetzt.

System_CAPS_pubmethodSetValue(Object, Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse legt den Wert der Komponente auf einen anderen Wert fest.

System_CAPS_pubmethodShouldSerializeValue(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse bestimmt einen Wert, der angibt, ob der Wert dieser Eigenschaft beibehalten werden muss.

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

A description of a property consists of a name, its attributes, the component class that the property is associated with, and the type of the property.

PropertyDescriptor provides the following properties and methods:

PropertyDescriptor also provides the following abstract properties and methods:

  • ComponentType contains the type of component this property is bound to.

  • IsReadOnly indicates whether this property is read-only.

  • PropertyType gets the type of the property.

  • CanResetValue indicates whether resetting the component changes the value of the component.

  • GetValue returns the current value of the property on a component.

  • ResetValue resets the value for this property of the component.

  • SetValue sets the value of the component to a different value.

  • ShouldSerializeValue indicates whether the value of this property needs to be persisted.

Typically, the abstract members are implemented through reflection. For more information about reflection, see the topics in Reflection.

The following code example is built upon the example in the T:System.ComponentModel.PropertyDescriptorCollection class. It prints the information (category, description, display name) of the text of a button in a text box. It assumes that button1 and textbox1 have been instantiated on a form.

// Creates a new collection and assign it the properties for button1.
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(button1);

// Sets an PropertyDescriptor to the specific property.
System.ComponentModel.PropertyDescriptor myProperty = properties.Find("Text", false);

// Prints the property and the property description.
textBox1.Text = myProperty.DisplayName+ '\n' ;
textBox1.Text += myProperty.Description + '\n';
textBox1.Text += myProperty.Category + '\n';

The following code example shows how to implement a custom property descriptor that provides a read-only wrapper around a property. The SerializeReadOnlyPropertyDescriptor is used in a custom designer to provide a read-only property descriptor for the control's P:System.Windows.Forms.Control.Size property.

using System;
using System.Collections;
using System.ComponentModel;
using System.Text;

namespace ReadOnlyPropertyDescriptorTest
{
    // The SerializeReadOnlyPropertyDescriptor shows how to implement a 
    // custom property descriptor. It provides a read-only wrapper 
    // around the specified PropertyDescriptor. 
    internal sealed class SerializeReadOnlyPropertyDescriptor : PropertyDescriptor
    {
        private PropertyDescriptor _pd = null;

        public SerializeReadOnlyPropertyDescriptor(PropertyDescriptor pd)
            : base(pd)
        {
            this._pd = pd;
        }

        public override AttributeCollection Attributes
        {
            get
            {
                return( AppendAttributeCollection(
                    this._pd.Attributes, 
                    ReadOnlyAttribute.Yes) );
            }
        }

        protected override void FillAttributes(IList attributeList)
        {
            attributeList.Add(ReadOnlyAttribute.Yes);
        }

        public override Type ComponentType
        {
            get
            {
                return this._pd.ComponentType;
            }
        }


        // The type converter for this property.
        // A translator can overwrite with its own converter.
        public override TypeConverter Converter
        {
            get
            {
                return this._pd.Converter;
            }
        }


        // Returns the property editor 
        // A translator can overwrite with its own editor.
        public override object GetEditor(Type editorBaseType)
        {
            return this._pd.GetEditor(editorBaseType);
        }

        // Specifies the property is read only.
        public override bool IsReadOnly
        {
            get
            {
                return true;
            }
        }

        public override Type PropertyType
        {
            get
            {
                return this._pd.PropertyType;
            }
        }

        public override bool CanResetValue(object component)
        {
            return this._pd.CanResetValue(component);
        }


        public override object GetValue(object component)
        {
            return this._pd.GetValue(component);
        }

        public override void ResetValue(object component)
        {
            this._pd.ResetValue(component);
        }

        public override void SetValue(object component, object val)
        {
            this._pd.SetValue(component, val);
        }

        // Determines whether a value should be serialized.
        public override bool ShouldSerializeValue(object component)
        {
            bool result = this._pd.ShouldSerializeValue(component);

            if (!result)
            {
                DefaultValueAttribute dva = (DefaultValueAttribute)_pd.Attributes[typeof(DefaultValueAttribute)];
                if (dva != null)
                {
                    result = !Object.Equals(this._pd.GetValue(component), dva.Value);
                }
                else
                {
                    result = true;
                }
            }

            return result;
        }

        // The following Utility methods create a new AttributeCollection
        // by appending the specified attributes to an existing collection.
        static public AttributeCollection AppendAttributeCollection(
            AttributeCollection existing, 
            params Attribute[] newAttrs)
        {
            return new AttributeCollection(AppendAttributes(existing, newAttrs));
        }


        static public Attribute[] AppendAttributes(
            AttributeCollection existing, 
            params Attribute[] newAttrs)
        {
            if (existing == null)
            {
                throw new ArgumentNullException("existing");
            }

            if (newAttrs == null)
            {
                newAttrs = new Attribute[0];
            }

            Attribute[] attributes;

            Attribute[] newArray = new Attribute[existing.Count + newAttrs.Length];
            int actualCount = existing.Count;
            existing.CopyTo(newArray, 0);

            for (int idx = 0; idx < newAttrs.Length; idx++)
            {
                if (newAttrs[idx] == null)
                {
                    throw new ArgumentNullException("newAttrs");
                }

                // Check if this attribute is already in the existing
                // array.  If it is, replace it.
                bool match = false;
                for (int existingIdx = 0; existingIdx < existing.Count; existingIdx++)
                {
                    if (newArray[existingIdx].TypeId.Equals(newAttrs[idx].TypeId))
                    {
                        match = true;
                        newArray[existingIdx] = newAttrs[idx];
                        break;
                    }
                }

                if (!match)
                {
                    newArray[actualCount++] = newAttrs[idx];
                }
            }

            // If some attributes were collapsed, create a new array.
            if (actualCount < newArray.Length)
            {
                attributes = new Attribute[actualCount];
                Array.Copy(newArray, 0, attributes, 0, actualCount);
            }
            else
            {
                attributes = newArray;
            }

            return attributes;
        }
    }
}

The following code examples show how to use the The SerializeReadOnlyPropertyDescriptor in a custom designer.

using System;
using System.Collections;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms.Design;

namespace ReadOnlyPropertyDescriptorTest
{   
    class DemoControlDesigner : ControlDesigner
    {
        // The PostFilterProperties method replaces the control's 
        // Size property with a read-only Size property by using 
        // the SerializeReadOnlyPropertyDescriptor class.
        protected override void PostFilterProperties(IDictionary properties)
        {
            if (properties.Contains("Size"))
            {
                PropertyDescriptor original = properties["Size"] as PropertyDescriptor;
                SerializeReadOnlyPropertyDescriptor readOnlyDescriptor = 
                    new SerializeReadOnlyPropertyDescriptor(original);

                properties["Size"] = readOnlyDescriptor;
            }

            base.PostFilterProperties(properties);
        }
    }
}
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace ReadOnlyPropertyDescriptorTest
{
    [Designer(typeof(DemoControlDesigner))]
    public class DemoControl : Control
    {
        public DemoControl()
        {

        }
    }
}

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: