Frage

Was ist der Unterschied ein PropertyDescriptor zwischen der Verwendung, die einen Wert für die IsReadOnly() Methode gibt, und eine, die mit einem ReadOnlyAttribute verbunden ist?

War es hilfreich?

Lösung

Der wesentliche Unterschied besteht darin, dass dies ermöglicht es Ihnen, mehr Kontrolle zu ergreifen, wenn Sie Ihre eigene PropertyDescriptor Implementierung liefern (über ICustomTypeDescriptor, TypeDescriptionProvider oder TypeConverter). Dann können Sie Ihre eigene Logik für, wenn es beschreibbar - z. B. basierend auf Zugriffsrechte

Aber ja; unter der Standardimplementierung wird es melden, ohne Setter Nur-Lese-Objekte und Objekte mit ReadOnlyAttribute markiert.

Andere Tipps

Kein Unterschied, wenn ich es sehe Reflektor verwenden.

Einer der abgeleiteten Klasse SimplePropertyDescriptor hat den folgenden Code ein.


    public override bool IsReadOnly
    {
        get
        {
            return this.Attributes.Contains(ReadOnlyAttribute.Yes);
        }
    }

Nur eine Anmerkung.

Ich verbrachte einen Tag ICustomTypeDescriptor für die Entitätsobjekten in meiner Anwendung der Umsetzung, um individuell den Nur-Lese-Zustand jeder Einheit zu steuern.

Somit wird jede PropertyDescriptor Implementierung gehalten, um eine Referenz auf das Objekt Entität es kam, so war die IsReadOnly-Eigenschaft so etwas wie folgt aus:

public override bool IsReadOnly
{
    get { return _owner.IsReadOnly;}
}

Allerdings, wenn ich den Code die Binding Komponente laufe in dem Satz für jeden Datensatz einen Satz von PropertyDescriptor s von den GetProperties () -Methode von ICustomTypeDescriptor lesen, jedoch, wenn sie den Wert der IsReadOnly geprüft, getestet, nur den PropertyDescriptor erhalten aus dem ersten Datensatz.

komplette Zeitverschwendung !!!!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top