昨天我認爲在WPF應用程序中實現自己的觸發器會很好。我創建了一個繼承TriggerBase的類MyTrigger。 TriggerBase是一個公共抽象類。所以繼承不是問題。但是這個類裏面的構造函數是內部標記的。編譯器拋出一個錯誤,因爲它不是有效的構造函數。爲什麼有人創建一個公共類,但將構造函數標記爲內部?內部構造函數
Q
內部構造函數
5
A
回答
9
如果您希望該類可見,但只允許它在您自己的程序集中進行子類化。這些子類本身可能有公共構造函數 - 或者它們可能會被工廠訪問。
我不能評論這是否是一個很好的WPF中的TriggerBase設計決策,但在某些情況下它至少是合理的。
5
我能想到的一個原因是新實例的實際創建將由同一個程序集中的另一個公共類來處理。這會迫使你通過這個其他類創建實例 - 可能是某種工廠模式實現。
2
它是公開的,因爲它用作帶有WPF(觸發器,MultiTrigger,EventTrigger,DataTrigger等)的觸發器的基類。它不是公開的,那麼你將無法將這些類標記爲公共。
構造函數是內部的,因爲它們不打算讓你自己使用它。我想你應該從上面提到的其中一個類派生出來。
相關問題
- 1. Dart內部構造函數
- 2. AS3函數內部構造函數與函數外部構造函數
- 3. 函數內部的Javascript構造函數
- 4. 構造函數內的構造函數
- 5. 如何在內部構造函數
- 6. 可變內部的Luse構造函數
- 7. React組件內部的構造函數
- 8. 內部構造函數原型設置
- 9. 對象內部的構造函數?
- 10. 受保護的內部構造函數
- 11. UnityContainer和內部構造函數
- 12. EJB內部查找:構造函數,@PostConstruct
- 13. 內部類的構造函數調用
- 14. 嘗試,抓住內部構造函數,調用基構造器
- 15. 使用try/catch內部調用另一個構造函數的構造函數
- 16. 內部構造
- 17. 部分類構造函數
- 18. 如何在構造函數類中調用內部函數?
- 19. 構造函數內部的函數vs原型
- 20. 將內部變量傳遞給結構構造函數C++
- 21. 調用「內部外部的」構造函數使用反射
- 22. Java:在構造函數內部或外部初始化對象?
- 23. Java - 內部類構造函數 - 只允許外部類
- 24. 構造函數內部或外部的成員初始化
- 25. 如何通過外部類構造函數訪問內部類?
- 26. 當我應該初始化構造函數內部的類字段和外部構造函數?
- 27. 使用函數構造函數創建函數的內部引用
- 28. 參數類型的內部構造函數
- 29. 根據構造函數中的參數創建內部對象?
- 30. 朱利亞參數構造函數 - 外部構造函數的問題