Extending a base class to a derived class

We have two classes BasicRace & AdvancedRace. AdvancedRace inherits from BasicRace

I have a BasicRace but i want to 'convert' it to the advanced class.

See code below as a example:

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

Any help would be great - I'm starting to think it can not be done unless i write a function to convert a basicRace to AdvancedRace going through each property one by one?

Answers


You can't "convert" from a base class to a subclass as such (you can't change the type of an existing object), but you can create new instance of the subclass that copies the properties from your base class.

Typical ways of implementing this for your classes might be:

  • a constructor in AdvancedRace that takes a BasicRace parameter and copies properties from it
  • a static method in AdvancedRace that takes a BasicRace parameter, creates the new object with copied properties, and then returns it

It's worth noting that this will result in two completely separate objects (one of each type) that aren't linked at all - changes in your AdvancedRace object won't be reflected in the BasicRace or vice-versa.


Need Your Help

Distributed caching systems and how they distribute data

caching memcached distributed

I'm looking for information on things like ehcache and other alternatives to memcached for a project that will likely involve 3-4 webservers and something like 2-10 million distributed objects that...

javascript behavior for '\352' decimal value

javascript salt

while checking login page, I found the following JS code

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.