Gestern dachte ich, es wäre nett, meinen eigenen Trigger in einer WPF-App zu implementieren. Ich habe eine Klasse MyTrigger erstellt, die TriggerBase geerbt hat. TriggerBase ist eine öffentliche abstrakte Klasse. Vererbung ist also kein Problem. Die Konstruktoren in dieser Klasse sind jedoch als intern markiert. Der Compiler gibt einen Fehler aus, da es keinen gültigen Konstruktor gibt. Warum erstellt jemand eine öffentliche Klasse, sondern markiert die Konstruktoren als intern?interner Konstruktor
Antwort
Wenn Sie möchten, dass die Klasse sichtbar ist, aber nur, dass sie innerhalb Ihrer eigenen Baugruppe unterklassifiziert werden kann. Die Unterklassen können öffentliche Konstruktoren selbst haben - oder sie können mit einer Fabrik aufgerufen werden.
Ich kann nicht sagen, ob das eine gute Design-Entscheidung für TriggerBase in WPF ist, aber es ist zumindest in einigen Situationen sinnvoll.
Ein Grund, an den ich denken könnte, ist, dass die tatsächliche Erstellung neuer Instanzen von einer anderen öffentlichen Klasse in derselben Baugruppe behandelt würde. Dies würde dazu führen, dass Sie die Instanz über diese andere Klasse erstellen - möglicherweise eine Art von Factory-Pattern-Implementierung.
Es ist öffentlich, da es als Basisklasse für die Trigger verwendet wird, die mit WPF (Trigger, MultiTrigger, EventTrigger, DataTrigger usw.) ausgeliefert werden. Es war nicht öffentlich, dann wäre es nicht möglich, diese Klassen als öffentlich zu kennzeichnen.
Die Konstruktoren sind intern, weil sie nicht beabsichtigen, sie selbst zu verwenden. Ich nehme an, Sie sollten von einer der oben genannten Klassen ableiten.
- 1. interne Schnittstelle * weniger * zugänglich als ein interner geschützter Konstruktor?
- 2. Interner Serverfehler
- 3. VC++ Interner Compiler Fehler
- 4. interner Umzug nicht behoben
- 5. Connecting interner APIs
- 6. Odoo Interner Serverfehler
- 7. Interner Serverfehler 500.24
- 8. Interner Speicher in Android
- 9. SubmitChanges() throws interner Serverfehler
- 10. Interner Kompilierfehler in NSIS
- 11. Interner Server Fehler
- 12. extern-interner Speicher
- 13. Interner Fehler URW1135
- 14. Ein interner Fehler aufgetreten
- 15. Android interner Speicher
- 16. GCC interner Compilerfehler: Segmentierungsfehler
- 17. SolrException: Interner Serverfehler
- 18. Verteilungen und interner Status
- 19. Laravel 5.2 interner Serverfehler
- 20. Matlab ode45 interner Schritt
- 21. HyperlinkButton zu interner Quelle
- 22. Laravel - 500 Interner Serverfehler
- 23. Passagier: interner Server Fehler
- 24. HTTP 500.19 - Interner Serverfehler
- 25. AVR Analogkomparator + Interner Pullup?
- 26. BigQuery UDF Interner Fehler
- 27. requestPasswordResetForEmailInBackground interner Server Fehler
- 28. Interner Serverfehler - Opencart
- 29. 500 Interner Serverfehler?
- 30. Interner Server Fehler Flask