Warum Microsoft sagt, dass Dependency Property viele Vorteile gegenüber den normalen CLR-Eigenschaften hat? Ist es möglich, alles durch normale Eigenschaften zu tun, welche Abhängigkeitseigenschaften können?Abhängigkeitseigenschaft hat viele Vorteile gegenüber den normalen CLR-Eigenschaften Wie?
Antwort
Während die Antworten in Kishore Kumar Link so ziemlich Nagel, möchte ich hinzufügen, eine Sache: es gibt nicht wirklich so etwas wie eine "normale Eigenschaft". Eigenschaften sind eigentlich nur verdeckte Methodenaufrufe, und Sie können sie so implementieren, wie Sie es für richtig halten.
C# 3 hinzugefügt Auto-Eigenschaften, die Eigenschaften auf einem Feld zu implementieren, und ein Feld als Hintergrund speichern für eine Eigenschaft ist sicherlich ziemlich häufig. Während man so weit gehen kann, das "normal" zu nennen, gibt es nichts Besonderes an dieser Art von Eigentum. Soweit es die CLR betrifft, ist eine DP eine normale Eigenschaft: Sie stellt einen Getter und einen Setter auf die normale Weise bereit, was bedeutet, dass jede Sprache, die CLR-Eigenschaften versteht, die normale Eigenschaftensyntax beim Zugriff auf die Eigenschaft verwenden kann.
Es ist nicht so, dass eine einfache Feld-Backed-Eigenschaft die einzige gemeinsame Implementierung ist. Viele Klassen leisten zusätzliche Arbeit in ihren Eigentum Accessoren, um zum Beispiel INotifyPropertyChanged
zu unterstützen. Aber es wäre seltsam zu sagen, dass dies keine "normalen" Eigenschaften sind.
In gewisser Weise ist ein DP nur eine der vielen Möglichkeiten, wie Sie eine normale Eigenschaft implementieren können.
So, um die Frage zu beantworten: Ja, es ist "möglich, alles durch normale Eigenschaften zu tun, welche Abhängigkeitseigenschaft tun kann", weil Sie nur eine Abhängigkeitseigenschaft als die Implementierung für Ihre normale Eigenschaft verwenden.
Wenn Sie jetzt möchten, dass Ihre Immobilie das gleiche Verhalten bietet, das eine EP bietet, ohne das DP-System in Ihrer Implementierung zu verwenden ... wäre das eine Menge Arbeit. Und in einigen Fällen wäre es nicht einmal möglich: Wenn Sie beispielsweise eine Eigenschaft haben wollen, die an einer TemplateBinding in einer ControlTemplate teilnehmen kann, dann muss es, soweit ich weiß, unbedingt eine DP sein. Wenn Sie jedoch DP-Funktionen ignorieren, die für WPF hochspezialisiert sind, können Sie das entsprechende Verhalten erneut erstellen. WPF ist schließlich nur Code. Wenn also WPF etwas tun kann, können Sie auch - Sie können Ihre eigene Version von WPF mit genügend Zeit und Ressourcen schreiben.
Grundsätzlich mit DPs erhalten Sie eine Menge von Ereignissen, die normale Eigenschaften nicht haben. Ich weiß, dass es mühsam ist, sie zu registrieren, aber sie sind ziemlich flexibel :)
Weitere Informationen in der Kishore der Link: p
Abhängigkeitseigenschaften sind sehr schwer zu Unit-Test, so sollte nicht in Viewmodels verwendet werden (wie einige Leute tun), aber nur in WPF UI-Kontrollen
- 1. Hat ExecuteScalar() irgendwelche Vorteile gegenüber ExecuteReader()?
- 2. Welche Vorteile hat das Test Data Builder-Muster gegenüber Objektinitialisierern?
- 3. Welche Vorteile hat Scala gegenüber Java für die gleichzeitige Programmierung?
- 4. Vorteile von MemoryPoolMXBean.getUsage() gegenüber Runtime.freeMemory()
- 5. Welche Vorteile hat eine dokumentenbasierte Datenbank gegenüber einer relationalen Datenbank?
- 6. Welche Vorteile hat MATLAB gegenüber SCILAB und umgekehrt?
- 7. Vorteile von Parcelable gegenüber JSON
- 8. Vorteile von MySQL gegenüber MySQL
- 9. Bietet Pthreads irgendwelche Vorteile gegenüber GCD?
- 10. Faule Singleton welche Vorteile gegenüber den Faden sicher ein
- 11. Groovy Vorteile gegenüber Jython oder Jruby?
- 12. Reactjs: Gibt es Vorteile bei der Verwendung von React-Komponenten gegenüber normalen Funktionen?
- 13. Welche Vorteile bietet Sass gegenüber normalem CSS?
- 14. Vorteile von abstrakten Methoden gegenüber Methodenüberschreibung
- 15. ado.net Datendienst Vorteile/Nachteile gegenüber WCF-Dienst
- 16. Welche Vorteile bietet WCF gegenüber ASMX-Webdiensten?
- 17. Hat PLINQ wirklich Vorteile?
- 18. Vorteile der Tag-Dispatching-Funktion gegenüber normaler Übersteuerungsauflösung
- 19. Vorteile von jQuery Widget gegenüber regulären JS-Objekt?
- 20. Was sind Vorteile einer Twitter-Zukunft gegenüber einer Scala-Zukunft?
- 21. Welche Vorteile bietet ODBC gegenüber einer bestimmten RDBMS-API?
- 22. Vorteile von Polling Multiple Ble Verbindungen gegenüber simultanen Verbindungen?
- 23. Hat eine sprachspezifische IDE Vorteile gegenüber einem Plugin für eine mehrsprachige IDE?
- 24. Was sind die Vorteile eines Powershell-Skripts gegenüber einer Konsolenanwendung?
- 25. Was sind die Vorteile von QAbstractItemModel gegenüber QStandardItemModel?
- 26. Was sind die Vorteile von Google Fonts gegenüber Cufon?
- 27. Was sind die Vorteile von Bytecode gegenüber nativem Code?
- 28. Was sind die Vorteile von concurrent.futures gegenüber Multiprocessing in Python?
- 29. Vorteile der Verwendung von Wrapper-Klassen gegenüber Primitiven in Java
- 30. Welche Vorteile bietet ein MSI-Installationsprogramm gegenüber einer Standard-setup.exe?