2013-05-03 190 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