語言:C# 主題:擴展控件。如何在不調用基本代碼的情況下擴展用戶控件
我有一個用戶控件B,它有一個字段F,它是一個用於顯示圖像的控件。
我有第二個用戶控件X,它擴展了B.它利用了基本的F,但有它自己的實現(顯示X的特定按鈕等)。
X和B都在單獨的項目中找到,B不是抽象的;這是一個具體的實現。
問題:創建X時,調用第一個B的構造函數,其中它初始化F.調用B的構造函數後,執行它自己的構造函數,其中它將F設置爲其他值。
這不是理想的:
1)F的兩個實例存在,而X應該使用新的F,它似乎在顯示圖像時引用基底F.
解決方法:
1)中的X,取代F I可以配置base.F的前 - 或
2)在B,I可以測試類型:如果類型是X,則跳過F公司初始化。
雖然我可以使用這些解決方法中的任何一種,但有些東西告訴我存在更好的體系結構。但是什麼?
F和F在X和B中的初始化是否不同? – 2011-03-25 15:34:22
是的,更糟糕的是,這兩種初始化都具有基類 - 子類關係。我開始認爲,由於可維護性原因,代碼複製可能比重用更好。但我認爲安東破解了它。在別的地方還有其他的init問題,但他們應該解決。 – Wak 2011-03-25 16:10:10