Détecter un objet retourné
Bonjour
J'ai le code ci-dessous avec une Classe Base Toponyme et deux classes dérivées ToponymeFR et ToponymeBE
Une fonction Detecter me permet de renvoyer la bonne classe dérivée.
1) J'utilise dans Detecter un Return Objet ce qui ne me plait guère mais ai-je le choix?
2) ToponymeFr et ToponymeBe ont des propriétés différentes CodeINSEE et CodeINS auxquels je n'ai pas accès dans mon Main. J'ai essayé de trouver une fonction ObjectType me permettant d'orienter le traitement en fonction de l'objet retourné par Detecter, mais sans succès.
Merci pour votre aide.
Bernard
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| Module Module1
Sub Main()
Dim def As New List(Of String)
def.Add("France")
def.Add("Belgique")
For Each d As String In def
Dim o As Object
o = Detecter(d)
Console.WriteLine("Objet =" & o.ToString)
Console.WriteLine("Nom =" & o.nom)
Select Case objectType '???????????
Case ToponymeFr
Console.WriteLine("CodeINSEE=" & o.CodeINSEE) '???????????
Case ToponymeBe
Console.WriteLine("CodeINS=" & o.CodeINS) '???????????
End Select
Next
Console.ReadLine()
End Sub
Function Detecter(def As String) As Object
Select Case def
Case "France"
Dim topo As New ToponymeFr
Return topo
Case "Belgique"
Dim topo As New ToponymeBe
Return topo
Case Else
Return Nothing
End Select
End Function
Public Class Toponyme
Property Def As String
Property Nom As String
Property Code As String
Public Sub New(d As String)
Def = d
End Sub
Public Sub New()
End Sub
End Class
Public Class ToponymeFr
Inherits Toponyme
Property CodeINSEE As String
Public Sub New(d As String)
MyBase.New(d)
Nom = "France"
Code = "Fr"
CodeINSEE = d
End Sub
Public Sub New()
Nom = "France"
Code = "Fr"
End Sub
End Class
Public Class ToponymeBe
Inherits Toponyme
Property CodeINS As String
Public Sub New(d As String)
MyBase.New(d)
Nom = "Belgique"
Code = "Be"
CodeINS = d
End Sub
Public Sub New()
Nom = "Belgique"
Code = "Be"
End Sub
End Class
End Module |