If you have separate classes defined for each of these objects then you should define a standard interface that each of the other classes implements, and this would provide a method for returning a list of cities
Public Interface ICityProvider
Function GetCities() As ArrayList 'use whatever collection type
End Interface
Public Class World
Implements ICityProvider
Public Function GetCities() As System.Collections.ArrayList Implements ICityProvider.GetCities
Return New ArrayList 'really return a list of cities for a world here
End Function
End Class
Public Class County
Implements ICityProvider
Public Function GetCities() As System.Collections.ArrayList Implements ICityProvider.GetCities
Return New ArrayList 'really return a list of cities for a County
End Function
End Class
'repeat for each of your other classes
each of the individual classes would need to provide it's own implementation for how to return a list of cities.
You could then use this interface in your GetAllCities method like so:
Private _Cities As CityCollection
Private Sub GetAllCities(ByVal O As ICityProvider)
_Cities.Add(O.GetCities)
End Sub
the only thing you would need to do was make sure each of the other classes (World, State, County etc) return a valid list of cities.