2013-05-03 169 views
1

我們有兩個類BasicRace & AdvancedRace。 AdvancedRace繼承BasicRace將基類擴展爲派生類

我有一個BasicRace,但我想'轉換'爲高級類。下面

見代碼作爲例子:

Module Module1 
    Sub Main() 
     Dim bRace As New BasicRace With {.CourseID = 1, .MeetingDate = "2013-05-01", .RaceNumber = 1} 
     Dim aRace As New AdvancedRace 

     ' Upgrade bRace to AdvancedRace??????? 
    End Sub 
End Module 

Public Class BasicRace 
    Public Property MeetingDate As Date 
    Public Property CourseID As Integer 
    Public Property RaceNumber As Integer 
End Class 

Public Class AdvancedRace 
    Inherits BasicRace 
    Public Property RaceTitle As String 
End Class 

任何幫助將是巨大的 - 我開始覺得不能這樣做,除非我寫一個函數來轉換basicRace到AdvancedRace通過每個屬性去逐個?

+0

你可以寫一個高級種族的構造函數,它接受了基本種族的參數,並且這樣做。 – Nomad101 2013-05-03 08:18:20

+0

我如何將basicRace傳遞給AdvancedClass的基礎? – user2346043 2013-05-03 08:27:23

回答

2

您不能從基類「轉換」爲子類(您無法更改現有對象的類型),但是可以創建從基類複製屬性的新子實例類。

典型實施此爲你的類的方法可能是:

  • AdvancedRace一個構造函數從它需要一個BasicRace參數,並複製性
  • AdvancedRace一個靜態方法,它接受BasicRace參數,創建具有複製屬性的新對象,然後返回它

值得注意的是,這將導致兩個完全分離的對象(一個)根本沒有鏈接 - AdvancedRace對象中的更改不會反映在BasicRace中,反之亦然。

+0

我開始覺得有沒有辦法圍繞這個, 我將不得不編寫和維護一些代碼,以將BasicRace轉換爲AdvancedRace – user2346043 2013-05-03 08:43:31

+0

是的,您一定需要這種形式的東西。 – 2013-05-03 08:54:55