none
選擇繼承 RRS feed

  • 問題

  • 請教一下,目前我已知的VB繼承方式有單一繼承和多重繼承

    不知道是否能夠做出選擇繼承的方式呢?

    例如  假設 i = true 的話 就繼承 formA ,如果為 false 的話就繼承 formB

    請問這樣的方式,是否有辦法實現呢?

    2013年5月12日 下午 03:24

解答

  • 如果所謂的 UI 是指 Form , 那不論 Form1, Form2, Form3 它的上層都是 Form 類別.

    依據多型的原理

    Dim A as Form

    if 某個變數="1"

      A= new Form1()

    else

      A= new Form2()

    End If

    A.Show()

    簡單的做法差不多就是這樣


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 小修韓 2013年5月22日 下午 04:05
    2013年5月18日 下午 03:49
    版主

所有回覆

  • 1. VB 只有單一繼承,但可以實作多個介面。

    2. 如果你真的想要做,得自己寫 Reflection.Emit 或 Code Generator。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2013年5月12日 下午 03:35
    版主
  • 這樣做的好處可以具體說說嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年5月12日 下午 04:13
    版主
  • 您或許可以反過來思考,建立兩個class,叫做classA 及classB,classA 繼承formA,classB繼承formB,當 i = true 時,new一個classA的實體,去執行classA下的Method,反之則為classB.

    2013年5月12日 下午 04:28
  • 參考樓上的做法

            Dim a

            Dim b As Boolean

            If b Then
                a = New ClassA
            Else
                a = New ClassB
            End If



    • 已編輯 ed0507 2013年5月14日 上午 05:48
    2013年5月14日 上午 05:45
  • 樓主來點意見吧, 你不來點意見, 我都不知道該怎麼給你正確的建議.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年5月15日 上午 02:53
    版主
  • 抱歉 這幾天有事到外縣市去了

    因原本設計好幾種UI,但是使用的 code 都相同,只有UI不同

    針對不同的電腦分別安裝,但後來覺得不是很方便

    所以才想說,如果使用繼承的方式直接去呼叫,那安裝檔只需一個

    在配合my.setting 的方式,就可以更方便了

    2013年5月17日 下午 06:55
  • 請愛用介面 (interface) ...

    像你這種需求,可以參考一下 MVVM 或 MVP 模式。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 璉璉Moderator 2013年5月18日 上午 07:10
    • 已取消標示為解答 小修韓 2013年5月22日 下午 04:06
    2013年5月18日 上午 12:59
    版主
  • 如果所謂的 UI 是指 Form , 那不論 Form1, Form2, Form3 它的上層都是 Form 類別.

    依據多型的原理

    Dim A as Form

    if 某個變數="1"

      A= new Form1()

    else

      A= new Form2()

    End If

    A.Show()

    簡單的做法差不多就是這樣


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 小修韓 2013年5月22日 下午 04:05
    2013年5月18日 下午 03:49
    版主