2012-03-08 42 views
0

我的情況是,我有一個控制被實現來處理兩種不同的類型。所以在我有if(controlType == "Type1") ... else...的一些方法中,我想用基類將它分成兩個不同的控件來處理這兩個控件的通用操作。兩個控件都會有相同的標記,所以我想處理基類中的控件事件,但設計者似乎把這個問題搞砸了。我幾乎覺得像一個通用的.ascx將是完美的,但我不知道從哪裏開始。我可以創建一個抽象基類UserControl,以便派生.ascx必須實現某些控件?

+0

設計師如何解決問題? – 2012-03-08 15:31:09

回答

1

在過去,我嘗試了各種各樣的繼承和用戶控件,包括一個從另一個ascx繼承的ascx,並且後來決定不值得麻煩,因爲它的維護往往是一點點頭痛。

有兩個從一個公共基類繼承的ascx控件可行,但我也發現試圖處理基類中的事件變得困難。最後,我只是從事件中調用基類中的方法。你必須處理兩個控件中的事件,但至少從現在起兩年後人們可以遵循這些代碼。

通用ASCX將是真棒,是可能的:

不過雖然這是一個聰明的解決辦法,因爲EDI不直接支持它,我懷疑它最終會增加維護問題。

我知道這可能不是你想要的答案,但是具有醜陋的if(controlType == "Type1")代碼雖然感覺不雅,但最終可能最容易維護,只是因爲Visual Studio本質上不支持用戶控件的繼承。

祝你好運,如果你找到一個優雅的解決方案,請讓我知道!

+0

感謝頂部鏈接幾乎是我整天浪費的東西 – Mike 2012-03-08 22:16:08

相關問題