ReadOnlyAttribute vs PropertyDescriptor.IsReadOnly ()
-
09-09-2019 - |
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?
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 !!!!